2014-09-29 215 views
-5

我使用ILSpy对C#程序集进行了反编译。在VC中作为项目开放。
一小部分代码会抛出我不知道如何解决的错误。下面的代码:

public static class CoroutineUtils 
{ 
    [DebuggerHidden] 
    public static IEnumerator WaitForRealSeconds(float time) 
    { 
     CoroutineUtils.<WaitForRealSeconds>c__Iterator2F <WaitForRealSeconds>c__Iterator2F = new CoroutineUtils.<WaitForRealSeconds>c__Iterator2F(); 
     <WaitForRealSeconds>c__Iterator2F.time = time; 
     <WaitForRealSeconds>c__Iterator2F.<$>time = time; 
     return <WaitForRealSeconds>c__Iterator2F; 
    } 
} 

而这里的错误:意外字符 '$'(在这种情况下,第8行)。
如果我打开其中出现错误的cs文件,编译器开始扔了十几错误,如标识预期第6行(右后“CoroutineUtils。”)
不知道该怎么做。

回答

4

你不能复制/粘贴反编译的代码,并确保它能正常工作。编译器可以使用在C#代码中无效但在IL中有效的标识符。它主要发生在编译器生成的代码 - 自动属性,匿名类型,迭代器和转换为状态机等等。这就是这种情况。

确实很难说代码应该做什么,所以很难说如何解决这个问题。

+0

问题中的代码看起来像一个'yield return'迭代器。 – Dai 2014-09-29 06:52:28

+0

谢谢。这是否意味着ILSpy无法完全反编译代码,但其他软件可能会成功?或者是这样吗? – Bester 2014-09-29 06:52:56

+0

我不知道。你可以试试。 – MarcinJuraszek 2014-09-29 06:54:14