0
我想反編譯一些C#代碼使用IEnumerators與yield-return,但沒有反編譯器麻煩將變量重命名爲有效的C#名稱。我嘗試過ILSpy,JustDecompile,dotPeek和Reflector,沒有成功。C#如何反編譯yield-return枚舉
反編譯到目前爲止例如:
private IEnumerator _WaitForSecondsThenStop(float startToFadeTime, float fadeOutLength)
{
AudioObject.<_WaitForSecondsThenStop>c__Iterator0 <_WaitForSecondsThenStop>c__Iterator = new AudioObject.<_WaitForSecondsThenStop>c__Iterator0();
<_WaitForSecondsThenStop>c__Iterator.startToFadeTime = startToFadeTime;
<_WaitForSecondsThenStop>c__Iterator.fadeOutLength = fadeOutLength;
<_WaitForSecondsThenStop>c__Iterator.<$>startToFadeTime = startToFadeTime;
<_WaitForSecondsThenStop>c__Iterator.<$>fadeOutLength = fadeOutLength;
<_WaitForSecondsThenStop>c__Iterator.<>f__this = this;
return <_WaitForSecondsThenStop>c__Iterator;
}
ILSpy是假想able to編譯枚舉正確,但它不爲我工作。我讀過的地方可能是由於代碼的一些優化導致ILSpy無法識別這些模式,所以它可能是由此引起的。
但是,我想問的是:是否有一個C#反編譯器,將所有的字段,變量和類重命名爲有效的C#名稱?我對狀態自動機瘋狂很好,只要它編譯爲一個合適的C#代碼即可。
這種類型的問題是專門針對SO的話題。我希望有5k +網站代表的人知道這一點。 – itsme86
哦,是的,我已經在考慮1個解決方案,它會在主題上(至少是某種程度上),而這只是用一些正則表達式「手動」替換它。 – kajacx