Mercurial > pub > bltoolkit
comparison Source/Reflection/Emit/Examples.CS.xml @ 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 <?xml version="1.0" encoding="utf-8" ?> | |
2 <examples> | |
3 | |
4 <emit name="Emit"> | |
5 <example> | |
6 <code lang="C#"> | |
7 using System; | |
8 | |
9 using NUnit.Framework; | |
10 | |
11 using BLToolkit.Reflection; | |
12 using BLToolkit.Reflection.Emit; | |
13 | |
14 namespace Examples.Reflection.Emit | |
15 { | |
16 [TestFixture] | |
17 public class HelloWorld | |
18 { | |
19 public interface IHello | |
20 { | |
21 void SayHello(string toWhom); | |
22 } | |
23 | |
24 [Test] | |
25 public void Test() | |
26 { | |
27 EmitHelper emit = new AssemblyBuilderHelper("HelloWorld.dll") | |
28 .DefineType ("Hello", typeof(object), typeof(IHello)) | |
29 .DefineMethod(typeof(IHello).GetMethod("SayHello")) | |
30 .Emitter; | |
31 | |
32 /*[a]*/emit/*[/a]*/ | |
33 // string.Format("Hello, {0}!", toWhom) | |
34 // | |
35 ./*[a]*/ldstr/*[/a]*/ ("Hello, {0}!") | |
36 ./*[a]*/ldarg_1/*[/a]*/ | |
37 ./*[a]*/call/*[/a]*/ (typeof(string), "Format", typeof(string), typeof(object)) | |
38 | |
39 // Console.WriteLine("Hello, World!"); | |
40 // | |
41 ./*[a]*/call/*[/a]*/ (typeof(Console), "WriteLine", typeof(string)) | |
42 ./*[a]*/ret/*[/a]*/() | |
43 ; | |
44 | |
45 Type type = emit.Method.Type.Create(); | |
46 | |
47 IHello hello = (IHello)TypeAccessor.CreateInstance(type); | |
48 | |
49 hello.SayHello("World"); | |
50 } | |
51 } | |
52 } | |
53 </code> | |
54 </example> | |
55 </emit> | |
56 | |
57 | |
58 </examples> |