在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
,除非反编译出现问题(在这种情况下,它无论如何都无法工作,尽管如果有什么不同的话,它更有可能得到比这里更全面的错误部分),那么你就会有工作代码。然后在整理其余部分时进行整理,如果愿意,可以提供更好的名称和/或将其变成一个匿名类。