如何在ConstructorBuilder中定义局部变量?

时间:2010-12-15 22:21:53

标签: c# reflection.emit

我想为在运行时构建的对象创建一个构造函数,该构造函数调用一个方法,该方法接受传递给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而不关心首先定义它?

1 个答案:

答案 0 :(得分:2)

您是否可以调用GetILGenerator()然后使用ILGenerator.DeclareLocal声明局部变量?

不可否认,我没有尝试使用任何此类功能,但它听起来就像它要走的路一样......