私のクラスでは、デリゲートタイプを宣言し、そのインスタンスを作成してから、そのインスタンスからBeginInvokeを呼び出しています。
public class ClassA
{
...
public delegate bool MyDelegate(int x);
...
public void MethodA()
{
...
var myDelegate = new MyDelegate(Foo);
myDelegate.BeginInvoke(...);
...
}
...
}
MethodAの単体テストを作成する際に、 BeginInvokeが呼び出されることは実際には望んでいません。私がやりたいのは、Molesフレームワークを使用してBeginInvoke呼び出しを無効にすることです。普段はやってみます
MMyDelegate.AllInstances.BeginInvoke... = (...) => { /* something here */ }
しかし、MyDelegateタイプのモルを生成することはできませんでした。
http://msdn.microsoft.com/en-us/library/system.delegate.aspxによると、「共通言語ランタイムは、各デリゲートタイプにBeginInvokeメソッドとEndInvokeメソッドを提供します」。これが事実であり、BeginInvokeがDelegateクラス(CLRによって提供される)内のメソッドでさえない場合、それをモル化することさえ可能ですか?デリゲートタイプからBeginInvokeを削除することに運が良かった人は他にいますか?