本文整理汇总了C#中System.Reflection.Emit.TypeBuilder.DefineTypeInitializer方法的典型用法代码示例。如果您正苦于以下问题:C# TypeBuilder.DefineTypeInitializer方法的具体用法?C# TypeBuilder.DefineTypeInitializer怎么用?C# TypeBuilder.DefineTypeInitializer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Reflection.Emit.TypeBuilder
的用法示例。
在下文中一共展示了TypeBuilder.DefineTypeInitializer方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
public class MyApplication
{
public static void Main()
{
// Create the "HelloWorld" class
TypeBuilder helloWorldClass = CreateCallee(Thread.GetDomain());
Console.WriteLine("Full Name : " + helloWorldClass.FullName);
Console.WriteLine("Constructors :");
ConstructorInfo[] info =
helloWorldClass.GetConstructors(BindingFlags.Public|BindingFlags.Instance);
for(int index=0; index < info.Length; index++)
Console.WriteLine(info[index].ToString());
}
// Create the callee transient dynamic assembly.
private static TypeBuilder CreateCallee(AppDomain myDomain)
{
AssemblyName myAssemblyName = new AssemblyName();
myAssemblyName.Name = "EmittedAssembly";
// Create the callee dynamic assembly.
AssemblyBuilder myAssembly = myDomain.DefineDynamicAssembly(myAssemblyName,
AssemblyBuilderAccess.Run);
// Create a dynamic module named "CalleeModule" in the callee assembly.
ModuleBuilder myModule = myAssembly.DefineDynamicModule("EmittedModule");
// Define a public class named "HelloWorld" in the assembly.
TypeBuilder helloWorldClass = myModule.DefineType("HelloWorld", TypeAttributes.Public);
// Define a private String field named "Greeting" in the type.
FieldBuilder greetingField = helloWorldClass.DefineField("Greeting", typeof(String),
FieldAttributes.Private);
// Create the constructor.
ConstructorBuilder constructor = helloWorldClass.DefineTypeInitializer();
// Generate IL for the method. The constructor calls its base class
// constructor. The constructor stores its argument in the private field.
ILGenerator constructorIL = constructor.GetILGenerator();
constructorIL.Emit(OpCodes.Ldarg_0);
ConstructorInfo superConstructor = typeof(Object).GetConstructor(new Type[0]);
constructorIL.Emit(OpCodes.Call, superConstructor);
constructorIL.Emit(OpCodes.Ldarg_0);
constructorIL.Emit(OpCodes.Ldarg_1);
constructorIL.Emit(OpCodes.Stfld, greetingField);
constructorIL.Emit(OpCodes.Ret);
helloWorldClass.CreateType();
return(helloWorldClass);
}
}