正在解压缩.Net代码:lambda表达式



在Xamarin Assembly Browser中分解类库我在源中有无效语法

InventoryTab.<DrawResources>c__AnonStoreyF <DrawResources>c__AnonStoreyF = 
    new InventoryTab.<DrawResources>c__AnonStoreyF ();

什么代码对应于这样的输出?

编辑1

lambda(谢谢,D Stanley)拆卸的整个相关部分是

InventoryTab.<DrawResources>c__AnonStoreyF <DrawResources>c__AnonStoreyF = 
    new InventoryTab.<DrawResources>c__AnonStoreyF ();
<DrawResources>c__AnonStoreyF.tooltipText = "some string";
if (current.availableCount > -1) {
    InventoryTab.<DrawResources>c__AnonStoreyF arg_432_0 = 
        <DrawResources>c__AnonStoreyF;
    string tooltipText = <DrawResources>c__AnonStoreyF.tooltipText;
    arg_432_0.tooltipText = string.Concat (new string[] {
        tooltipText,
        // and some more strings...
        "nn"
    });
}
TipSignal tipSignal = new TipSignal (() => 
    <DrawResources>c__AnonStoreyF.tooltipText, 
    <DrawResources>c__AnonStoreyF.tooltipText.GetHashCode ()
);
TooltipHandler.TipRegion (rect, tipSignal);

现在我正试图弄清楚lambda应该是什么样子的。

编辑2

Tip信号定义为

public TipSignal (string text, int uniqueId);

编辑3

以下代码可以作为lambda替换吗?

string tooltipText = "some string";
if (current.availableCount > -1) {
    tooltipText = string.Concat (new string[] {
        tooltipText,
        // and some more strings...
        "nn"
    });
}
TipSignal tipSignal = new TipSignal (tooltipText, tooltipText.GetHashCode ());
TooltipHandler.TipRegion (rect, tipSignal);

它不可能看起来"应该",因为你正在反编译,所以任何给出相同结果的代码都是同样正确的。当你进行反编译时,不可能知道原始代码是什么样子的,因为任何反编译都必须在几个可能的输入之间进行猜测,不会包括删除的死代码,等等

只需将故意无效的名称(在最初的编译中使用,以确保不会与开发人员实际使用的名称冲突)更改为有效的名称,如DrawResourcesc__AnonStoreyF,除非反编译出现问题(在这种情况下,它无论如何都无法工作,尽管如果有什么不同的话,它更有可能得到比这里更全面的错误部分),那么你就会有工作代码。然后在整理其余部分时进行整理,如果愿意,可以提供更好的名称和/或将其变成一个匿名类。

最新更新