我想为在运行时构建的对象创建一个构造函数,该构造函数调用一个方法,该方法接受传递给ctor的所有参数的对象数组。看看如何构建这样的方法,似乎我必须做一些像::
这样的事情method pulbic hidebysig specialname rtspecialname instance void .ctor(SomeObject arg) cil managed
{
ldarg.0
call void MyNameSpace.BaseClass::.ctor();
ldc.i4.1
newarr System.Object
stloc.0
ldloc.0
ldc.i4.0
ldarg.1
stelem.ref
ldloc.0
call void SomeClass.Method(object[])
ret
}
相当简单,但如何在ctor构建器上定义object[]
类型的局部变量?似乎没有办法定义变量,或者我只是发出stloc.0/ldloc.0
而不关心首先定义它?
答案 0 :(得分:2)
您是否可以调用GetILGenerator()
然后使用ILGenerator.DeclareLocal
声明局部变量?
不可否认,我没有尝试使用任何此类功能,但它听起来就像它要走的路一样......