Pau*_*ull 5 c# constructor reflection.emit base typebuilder
我试图动态创建一个空构造函数,它接受一个参数,并使用TypeBuilder简单地调用base(参数).
我的代码是这样的:
(...)
// Create a class derived from this class
TypeBuilder typeBuilder = moduleBuilder.DefineType("NewClass", TypeAttributes.Class, this.GetType());
ConstructorInfo baseCtor = this.GetType().GetConstructor(new[] { typeof(int) });
// Define new ctor taking int
ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, new[] { typeof(int) });
// Generate code to call base ctor passing int
ILGenerator ctorIL = constructorBuilder.GetILGenerator();
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Ldarg_1);
ctorIL.Emit(OpCodes.Call, baseCtor);
ctorIL.Emit(OpCodes.Ret);
// Generate derived class
Type type = typeBuilder.CreateType();
// Try to instantiate using new constructor
ConstructorInfo ctor = type.GetConstructor(new[] { typeof(int) });
object instance = ctor.Invoke(new object[] { 42 });
(...)
Run Code Online (Sandbox Code Playgroud)
但总是失败抛出异常
System.Reflection.TargetInvocationException: NewClass..ctor(int32)
我做错了什么?
非常感谢任何帮助,
保罗
| 归档时间: |
|
| 查看次数: |
2185 次 |
| 最近记录: |