Mercurial > pub > bltoolkit
comparison Examples/VB/Reflection.Emit/HelloWorld.vb @ 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 ''@ example: | |
| 2 ''@ emit Emit | |
| 3 Imports System | |
| 4 Imports NUnit.Framework | |
| 5 | |
| 6 Imports BLToolkit.Reflection | |
| 7 Imports BLToolkit.Reflection.Emit | |
| 8 | |
| 9 Namespace Examples.Reflection.Emit | |
| 10 | |
| 11 <TestFixture()> _ | |
| 12 Public Class HelloWorld | |
| 13 | |
| 14 Public Interface IHello | |
| 15 Sub SayHello(ByVal toWhom As String) | |
| 16 End Interface | |
| 17 | |
| 18 <Test()> _ | |
| 19 Sub Test() | |
| 20 Dim assemblyHelper As AssemblyBuilderHelper = New AssemblyBuilderHelper("HelloWorld.dll") | |
| 21 Dim typeHelper As TypeBuilderHelper = assemblyHelper.DefineType("Hello", GetType(Object), GetType(IHello)) | |
| 22 Dim methodHelper As MethodBuilderHelper = typeHelper.DefineMethod(GetType(IHello).GetMethod("SayHello")) | |
| 23 Dim emit As EmitHelper = methodHelper.Emitter | |
| 24 | |
| 25 ' string.Format("Hello, {0} World!", toWhom) | |
| 26 ' | |
| 27 emit _ | |
| 28 .ldstr("Hello, {0} World!") _ | |
| 29 .ldarg_1 _ | |
| 30 .call(GetType(String), "Format", GetType(String), GetType(Object)) | |
| 31 | |
| 32 ' Console.WriteLine("Hello, World!"); | |
| 33 ' | |
| 34 emit _ | |
| 35 .call(GetType(Console), "WriteLine", GetType(String)) _ | |
| 36 .ret() | |
| 37 | |
| 38 Dim type As Type = typeHelper.Create() | |
| 39 | |
| 40 Dim hello As IHello = TypeAccessor.CreateInstance(type) | |
| 41 | |
| 42 hello.SayHello("VB") | |
| 43 End Sub | |
| 44 | |
| 45 End Class | |
| 46 | |
| 47 End Namespace |
