問題のあるメソッドを持つサードパーティアセンブリを使用しています。メソッドが使用されるべきではないことを開発者に警告する方法はありますか?コンパイル時に実行することをお勧めしますが、実行時には問題ありません。廃止された属性のようなものですが、別のアセンブリのものです。私はそれが仮想ではないので、メソッドをオーバーライドできません。別のアセンブリでメソッドを使用しないようにします
答えて
これが可能であることがわかる唯一の方法は、独自のアセンブリでAPIをラップし、提供されたアセンブリの代わりにアセンブリを使用するようにすることです。私は、同じメソッド名を使用して
using MyAPI;
public class MyWrapper
{
private MyAPI _api;
public MyWrapper()
{
_api = new MyAPI(); //Especially if you want to do some inits
}
public void APIMethod()
{
_api.APIMethod();
}
}
、それはあなたの開発者は、単に新しいクラスとオブジェクトのインスタンスを置き換えることを可能にする、あるいはそれ以上の生意気、クラスに同じことを呼び出すと、名前空間を変更します。
次に、問題のある方法を省略するか、または古いものとしてマークすることができます。
コードを生成するためにT4テンプレートを使用することもできるので、APIが変更された場合に再生成することができます。これは有用であったhttps://msdn.microsoft.com/en-us/library/dd820614.aspx
希望 - あなたはリフレクションを使用している場合、あなたもT4にNmoreの情報についてはT4 ...
を記述する必要はないかもしれません。
私はラップした場合、私はちょうど別の問題の1つの取引になります。メソッドのクラスを継承した(ラップされていない)クラスを作成し、メソッドをシャドウした場合の問題は何でしょうか。それはあまりにも問題がありますか? – BSalita
タイプ転送のヘルプがあれば、それはありますか? – BSalita
@BSalita別の問題を1つの問題と交換することがどういう意味なのか分かりません...あなたはこれを行うことで望みを達成することができ、リフレクションとコード生成を使用する場合は、非表示にしたいメソッドがバーチャルではないことを指摘したため、オーバーライドできません。あなたは運が悪いです、私は恐れています。 – Rendition
- 1. アセンブリからインターフェイスをロードし、そのメソッドを使用します。
- 2. メソッドのパラメータを使用し、それを別のメソッドで使用しますか?
- 3. 特定のアプリケーションに別のアセンブリを使用するよう指しています。C#forms/mvc
- 4. どのようにバッファを使用していますか? [Intelベースのアセンブリ]
- 5. どこで私が使用しようとしています「アセンブリ」属性
- 6. リバースを使用して別のアセンブリでページに移動
- 7. 別のアセンブリにUriを使用してイメージをロードする
- 8. 別のディレクトリのdllを使用しているCOM並列アセンブリ
- 9. アセンブリが別のプロセスで使用されています
- 10. 使用可能なアセンブリを使用するようにMEFに指示します
- 11. インテントを使用して別のアクティビティのメソッドにアクセスするにはどうすればよいですか?
- 12. WinDbgを使用して.NETプログラムにJITtedメソッドをアタッチするときに、JITtedメソッドの逆アセンブリを表示するにはどうすればよいですか?
- 13. 別の名前を使用してshowメソッドにどのようにルーティングしますか?
- 14. どのようにint()オブジェクトは、 "=="演算子をPython2の__eq __()メソッドなしで使用していますか?
- 15. System.Data.DataTableExtensionsのCopyToDataTableメソッドはどのように使用しますか?
- 16. 基本サークルプログラムでメソッドを使用しようとしています
- 17. アセンブリは、SQL Server 2014をインストールした後で、参照アセンブリよりもバージョンが高いDLLを使用します。
- 18. 準備が整うまでボタンを使用しないようにします。
- 19. 別のアセンブリを使用してC#コードを拡張する
- 20. NavigationWindow.Navigateメソッドはどのように使用しますか?
- 21. メソッド `self`引数にはどのような型を使用しますか?
- 22. パブリックAPIにはどのようなXMLシリアル化メソッドを使用しますか?
- 23. このアセンブリを理解しようとしています。
- 24. クラスはJavaの別のクラスで定義されたメソッドをどのように使用しますか?
- 25. .net標準のない新しいSystem。*アセンブリを使用できますか?
- 26. 'は、メソッドとして別の関数内にあるメソッドを呼び出すようになりました。
- 27. シェフを使用したテストファイルhttp_requestメソッドを別のサーバーで使用
- 28. イムのforeachを使用してループにしようとメソッドarray_push()を使用し
- 29. 別のメソッドを使用してメソッドから配列を表示しますか?
- 30. Laravel 5.4.xはピボットテーブル定義のメソッドを使用しないようにしています
@HimBromBeere彼はアクセス権のないサードパーティーのアセンブリで廃止されたメソッドをマークする方法を求めています。私が知っているそれを行う方法はありません。 – InBetween
それはここで答えるかもしれません:http://stackoverflow.com/questions/8316869/add-an-attribute-to-another-assemblys-class – HimBromBeere