Mercurial > pub > bltoolkit
comparison Tools/DocGen/Content/Doc/Reflection/Emit/HelloWorld.htm @ 0:f990fcb411a9
Копия текущей версии из github
| author | cin |
|---|---|
| date | Thu, 27 Mar 2014 21:46:09 +0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:f990fcb411a9 |
|---|---|
| 1 <p>The <b>System.Reflection.Emit</b> namespace provides classes to create dynamic assemblies at runtime. | |
| 2 It allows compilers and tools to emit <b>MSIL</b>, execute it and store it to a disk. | |
| 3 Although <b>Emit</b> is a powerful tool, it is also extremely hard to use.</p> | |
| 4 <p>Let us take a look at the following example, which demonstrates the "normal" way of emit programming:</p> | |
| 5 | |
| 6 HelloWorld.cs | |
| 7 <% ..\..\..\Examples\CS\Reflection.Emit\HelloWorldnormal.cs %> | |
| 8 | |
| 9 <p>Note that the Emit method takes one parameter as an OpCode and optionally another one, | |
| 10 which does not depend on the current operation context. So, this way is not entirely type safe.</p> | |
| 11 | |
| 12 <p>Fortunately, there is an alternative way. BLToolkit provides a helper class, | |
| 13 <a href='/Source/Reflection/Emit/EmitHelper.cs.htm'>EmitHelper</a>, | |
| 14 which can make your life a little bit easy. | |
| 15 It contains typed wrapper methods for almost all emit commands and allows writing source code | |
| 16 that looks similar to <b>MSIL</b>.</p> | |
| 17 <p>The following examples show how to use the EmitHelper class with C#, VB.NET, and C++/CLI.</p> | |
| 18 | |
| 19 HelloWorld.cs | |
| 20 <% ..\..\..\Examples\CS\Reflection.Emit\HelloWorld.cs %> | |
| 21 Cool!!! Isn't it?<br><br> | |
| 22 | |
| 23 HelloWorld.vb | |
| 24 <% ..\..\..\Examples\VB\Reflection.Emit\HelloWorld.vb %> | |
| 25 | |
| 26 HelloWorld.cpp | |
| 27 <% ..\..\..\Examples\Cpp\HelloWorld.cpp %> |
