0
我寫了一篇以瞭解對象的構造和IL方法調用遺憾的是它不打印構造對象和調用方法使用IL
下面的程序你是如何在控制檯上做
。
你有什麼想法嗎?
peverify的輸出也在下面給出。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection.Emit;
using System.Reflection;
using System.IO;
namespace Research
{
public class Program
{
public static void Main(string[] args)
{
AssemblyName name =
new AssemblyName(Path.GetFileNameWithoutExtension("Hello"));
AssemblyBuilder asmb =
System.AppDomain.CurrentDomain.DefineDynamicAssembly(name,
AssemblyBuilderAccess.Save);
ModuleBuilder modb = asmb.DefineDynamicModule("Hello");
TypeBuilder typeBuilder = modb.DefineType("Bar");
MethodBuilder methb =
typeBuilder.DefineMethod("Me", MethodAttributes.Static,
typeof(void), System.Type.EmptyTypes);
ILGenerator gen = methb.GetILGenerator();
ConstructorInfo cil = typeof(Research.Dog).GetConstructor(new Type[] { });
gen.Emit(OpCodes.Newobj, cil);
gen.Emit(OpCodes.Call, typeof(Research.Dog).GetMethod("Bark"));
gen.Emit(OpCodes.Ret);
}
}
public class Dog
{
public void Bark()
{
Console.WriteLine("How are you doing");
}
}
}
C:\ TEMP \研究\研究\ BIN \推出> peverify Research.exe
微軟(R)的.NET Framework PE 驗證。版本4.0.30319.1 版權所有(c)Microsoft Corporation。 保留所有權利。
所有的類和方法在 Research.exe已驗證。
C:\ TEMP \研究\研究\ BIN \發佈>
...是什麼打印在控制檯上? – sisve 2011-06-05 13:45:16