私はデリゲートと一緒に遊んでいますが、私は基本的な何かを明確に把握していません。基本的なデリゲートの例で「オブジェクトがターゲットタイプと一致しません」
私は次のことを持っている:上記の例で
class Test
{
delegate bool Foo();
public void Run()
{
Delegate foo = new Foo((delegate() { return true; }));
bool result = (bool)foo.Method.Invoke(foo, null);
}
}
Test test = new Test();
test.Run();
私は例外が発生した:「オブジェクトは、ターゲット・タイプと一致していません。」
次作品大丈夫、しかし:私の最初の実装で間違って何
class Test
{
delegate bool Foo();
public void Run()
{
Foo foo = new Foo((delegate() { return true; }));
bool result = foo.Invoke();
}
}
Test test = new Test();
test.Run();
?パラメータを指定せずにfooのメソッドを呼び出すべきではありませんか?これは後者のコードと同じように見えます。
ありがとうございました。このサンプルコードは、はるかに大きなコードベースから抽出されているため、コード自体が奇妙に見えます。なぜ例外がスローされているのか理解しようとするが、最初に議員の仕組みを学ぶ必要がある。 –
@SeanAndersonデリゲートはとてもシンプルです。デリゲートは 'Target'だけでなく、' Method'を呼び出すだけです。彼らは一種のインタフェースのようなものです:)あなたが反射的なジャンボをやっていない限り、あなたはどちらでも気にしません - 単に 'Invoke'(またはより良い、'(...) ')、あなた大丈夫です。もし誰かが 'Delegate.Method.Invoke'の代わりに' Delegate.Method.Invoke'を使用していたら、それを見つけてなぜか尋ねます。場合によっては野球のバットを持って来てください。 – Luaan
コードは実際には反射的なジャンボジャンボをやっています。 Reflectionは、私たちが反映しようとしているDLLへの古い参照のために失敗しているように見えますが、それを100%自信がないので、まず問題を少し煮詰めようとしています。私は詳細な対応に感謝します。 –