2016-05-21 10 views
2

私はde4dotでC#大学のプログラムを実行してからリフレクタで逆コンパイルを行い、VSで実行したときに次のエラーが発生しました。逆コンパイルによりエラーCS1112が発生する、アセンブリ混乱

[アセンブリ:System.Runtime.CompilerServices.Extension]

エラーCS1112 'System.Runtime.CompilerServices.ExtensionAttribute' を使用しないでください。代わりに 'this' キーワード を使用してください。クライアントC:¥Users¥user¥Desktop¥333¥as2¥decom¥AssemblyInfo.cs 15 Active

このコードをこの()で置き換えようとしましたが、他の問題が発生しました。誰かが私が「これ」と取り替えるべきものを説明することはできますか?ここで明白な何かが欠けているような気がする。

答えて

3

あなたがメソッドにthisモディファイアを追加することを意図している:

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

その拡張メソッドになります。

一般的には、「ラウンドトリップ」コードにデコンパイラを使用しないでください。デコンパイラはコンパイラが実際に行ったことを確認するのに便利ですが、結果がコンパイルできないさまざまな状況があります。

+2

さらに悪いことに、結果が(コンパイルされていても)_correct_にならない状況があります。 –

2

アセンブリに拡張メソッドが含まれている場合、コンパイラによって[assembly: Extension]属性がアセンブリに追加されます。これは自動的に発生し、あなたが見ているエラーに基づいて、コンパイラは明示的にそれを行うことを望んでいません。残りのデコンパイラ出力が正しいと仮定すると、アセンブリレベルの属性をコメントアウトして、うまくいくはずです。

これは、デコンパイラの出力が正しいと決して決して考えるべきではありません。

+0

これは無視されることを警告します – batmaci

関連する問題