2016-05-21 38 views
2

所以我通過de4dot運行了一個C#大學程序,然後反射器反編譯它,當我在VS中運行它時出現以下錯誤。反編譯導致錯誤CS1112,程序集混淆

[裝配:System.Runtime.CompilerServices.Extension]

錯誤CS1112不要使用 'System.Runtime.CompilerServices.ExtensionAttribute'。改爲使用'this' 關鍵字 。客戶端C:\用戶\用戶\桌面\ 333 \ AS2 \ DECOM \ AssemblyInfo.cs中15活動

我試圖用這個和這個替換的代碼以及其他的東西,但只是導致其他問題()。有人能解釋我用什麼來代替'這個'嗎?我覺得我在這裏錯失了一些明顯的東西。

回答

3

你打算將this改性劑添加到方法:

public static class FooExtensions 
{ 
    public static void DoSomething(this Foo foo) 
    { 
     ... 
    } 
} 

這使得它的擴展方法。

一般認爲,我不會嘗試使用反編譯器來「往返」代碼 - 反編譯器可以用來查看編譯器實際做了什麼,但是有各種情況下結果將不可編譯。

+2

更糟糕的是,有些情況下,結果不會是_correct_(即使它編譯)。 –

2

當程序集包含擴展方法時,[assembly: Extension]屬性被編譯器添加到程序集中。這是自動發生的,根據你所看到的錯誤,編譯器不希望你明確地做。假設反編譯器輸出的其餘部分是正確的,註釋掉程序集級屬性,你應該沒問題。

也就是說,你永遠不應該假設反編譯器的輸出是正確的。

+0

這會返回將被忽略的警告 – batmaci