annotate Examples/CS/Reflection.Emit/HelloWorld.cs @ 9:1e85f66cf767 default tip

update bltoolkit
author nickolay
date Thu, 05 Apr 2018 20:53:26 +0300
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 //@ example:
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 //@ emit Emit
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using BLToolkit.Reflection;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using BLToolkit.Reflection.Emit;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 namespace Examples.Reflection.Emit
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 public class HelloWorld
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 public interface IHello
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 void SayHello(string toWhom);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 public void Test()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 EmitHelper emit = new AssemblyBuilderHelper("HelloWorld.dll")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 .DefineType ("Hello", typeof(object), typeof(IHello))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 .DefineMethod(typeof(IHello).GetMethod("SayHello"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 .Emitter;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 /*[a]*/emit/*[/a]*/
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 // string.Format("Hello, {0}!", toWhom)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 ./*[a]*/ldstr/*[/a]*/ ("Hello, {0}!")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 ./*[a]*/ldarg_1/*[/a]*/
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 ./*[a]*/call/*[/a]*/ (typeof(string), "Format", typeof(string), typeof(object))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 // Console.WriteLine("Hello, World!");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 ./*[a]*/call/*[/a]*/ (typeof(Console), "WriteLine", typeof(string))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 ./*[a]*/ret/*[/a]*/()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 ;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 Type type = emit.Method.Type.Create();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 IHello hello = (IHello)TypeAccessor.CreateInstance(type);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 hello.SayHello("World");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 }