我在运行时生成新类型,在生成默认构造函数后,我想生成另一个带有参数的构造函数。我这样做是这样的:
cb = tb.DefineConstructor(MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName,
CallingConventions.Standard, new Type[] { typeof(bool) });
GenConstructorWithParameters(cb, fields, genFields);
问题是,我无法从方法 GenConstructorWithParameters 调用默认构造函数,因为 CLR 不允许我编写如下内容:
gen.Emit(OpCodes.Ldarg_0);
gen.Emit(OpCodes.Call, cb.DeclaringType.GetConstructor(Type.EmptyTypes));//Not allowed to call .GetConstructor() on not created type!
如何发出对默认构造函数的调用?有可能吗?
tb - 的实例TypeBuilder
,cb -ConstructorBuilder