创建动态类型

时间:2017-02-28 05:24:01

标签: c#

使用System.Reflection.Emit创建动态类型时。

private AssemblyName _assemblyName;
private AssemblyBuilder _asssemblyBuilder;
private ModuleBuilder _moduleBuilder;
private TypeBuilder _typeBuilder;

// Create the new assembly
_assemblyName = new AssemblyName("ModuleName");
_asssemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(_assemblyName, AssemblyBuilderAccess.Run);

我在构建动态构造函数时遇到问题。我可以创建ILGenerator,但无法找到有关调用Emit时应该传递的参数的信息。

// Create the default constructor.
ConstructorInfo baseConstructorInfo = typeof(object).GetConstructor(new Type[0]);
ConstructorBuilder constructorBuilder = 
      _typeBuilder.DefineConstructor(
                 MethodAttributes.Public,
                 CallingConventions.Standard,
                 Type.EmptyTypes);

// Create the base call operations.
ILGenerator ilGenerator = constructorBuilder.GetILGenerator();

我在Emit电话中放置了什么?需要添加什么,以及动态构造函数在什么时候完成?

ilGenerator.Emit(?);
ilGenerator.Emit(?);
ilGenerator.Emit(?);
ilGenerator.Emit(OpCodes.Ret);

0 个答案:

没有答案