繁体   English   中英

转换C#代码

[英]Convert C# code

我需要在C#代码(使用ilGenerator.Emit)中模拟以下功能

public void AssignAttribute(ref ValueHolder output, Assignment assignment) {
    ResultAttribute attribute = null;

    if ( (attribute = output.MultipleResults.Find(delegate(ResultAttribute o) {
        return o.Name == assignment.Name;
    })) != null)
        attribute.Value = assignment.Value;
    }

有谁能够帮助我?

要做的事情是在项目C#中编译该方法,然后查看它使用Reflector生成的程序集中的IL。 您可以使用Emit轻松复制该IL,并进行所需的任何动态更改。

C#为您创建一个闭包(如果您不熟悉,请参见Wikipedia),因为在匿名方法主体中您引用了赋值变量(在您的情况下为参数,但这无关紧要)。

您需要为匿名委托创建类持有人(至少由c#编译器执行此操作)

那么您需要在此类中创建字段,因为您的委托代理人(我不是英语,所以这里可能拼写错误)

然后,在AssignAttribute主体中,您应该发出类实例化IL_0000:newobj实例void V24.Generated.Worker /'<> c__DisplayClass1'::。ctor()

以及虚假分配IL_0008:stfld类[nviss] NViss.Assignment V24.Generated.Worker /'<> c__DisplayClass1':: assignment

请注意,由于归档初始化完成后,对本地变量的任何访问都被替换为对字段的访问

再次抱歉我的英语

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM