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

发布于 2024-10-08 07:14:26 字数 534 浏览 1 评论 0原文

我想为运行时构建的对象创建一个构造函数,该构造函数调用一个方法,该方法采用传递给构造函数的所有参数的对象数组。看看如何构建这样的方法,看来我必须做类似的事情::

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 而不关心首先定义它?

I'd like to make a constructor for my object built at runtime that calls a method that takes an object array of all the parameters passed to the ctor. Looking at how to build such a method it appears I have to do something like::

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
}

Fairly straightforward, but how do I define a local variable of type object[] on the ctor builder? There doesn't appear to be a way to define variables, or do I just emit a stloc.0/ldloc.0 and not care about defining it first?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

金兰素衣 2024-10-15 07:14:26

您不能调用 GetILGenerator(),然后使用它来使用 ILGenerator.DeclareLocal 声明局部变量吗?

诚然,我还没有尝试过使用其中任何一个,但它听起来就像是要走的路......

Can't you call GetILGenerator() and then use that to declare a local variable using ILGenerator.DeclareLocal?

Admittedly I haven't tried using any of this, but it sounds like it's the way to go...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文