2009-07-14 17 views
0

実行時にメソッドの実装をreturn false;からreturn true;に変更するにはどうすればよいですか?私はサードパーティのライブラリに付属しているので、メソッドの実装を制御することはできません。任意の回避策が評価されます。繰り返しますが、メソッド自体も呼び出し元も制御しません。実行時に.NETでスワップメソッドの実装を行いますか?

+0

ライブラリのライセンスコードを回避しようとしていますか? – SLaks

+0

これは少し倫理的ではないと考えられますか? –

+0

私はそれを決して考えません! – usr

答えて

2

MethodRental.SwapMethodBodyメソッドを試してください。

+0

この方法はどのように使用されますか?私は自分でバイナリを生成する必要がありますか? – usr

+0

あなたがリンクしたページによれば、それはダイナミックなモジュールのためだけに働きます。 – Giorgi

+0

@Giorgi:そうです。私はそれに気付かなかった。 – SLaks

-1

もう少し情報が役立つでしょう。ライブラリをラップして他の人にあなたのラッパーを呼び出せますか?これは素晴らしいTDDの道でもあります。自分で実装できるインターフェースはありますか?ここでもDIを使用すると、実装を取り替えることができます。

+0

これは静的メソッドです。 – usr

0

このメソッドの呼び出し元を代行受信し、それを呼び出す代わりにtrueを返すことができます。たぶん詳細を投稿することができます。

+0

いいえ、彼はできません。質問 – SLaks

+0

SLaksを読んで、私は反射を使って、彼はそのメソッドの呼び出し元を傍受することができます。私はその質問を読んだ。 – user134706

+0

どのように? – SLaks

0

問題に関する詳細情報を入力してください。ブール結果を切り替えたい場合は、単純なbool result = !MyMethod();で十分です;)

-1

サブクラスとオーバーライド。サブクラス化できない場合は、Decoratorパターンを使用します。

+0

彼はどちらもすることができません - それは静的な方法です(最初のコメントを最初に見てください)。彼はコールサイトを制御しません – SLaks

関連する問題