使用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);