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