別のアセンブリから同じアセンブリから読み込まれたオブジェクトにデリゲートを割り当てようとして、楽しい時間を過ごしています。
loader.LoadedGestures は object[] です - その中の各オブジェクトは異なる .dll から取得されます。その配列内のすべてのオブジェクトが、下に定義されている GestureDetected をトリガーできるようにしたいと考えています。
public class Foo
{
private void Initialise_Gestures()
{
loader = new GestureLoader();
loader.LoadGestures(); // load all the Gestures into the array
for (int i = 0; i < loader.LoadedGestures.Length; i++)
{
if (loader.LoadedGestures[i] != null)
{
EventInfo ev = loader.LoadedGestures[i].GetType().GetEvent("GestureDetected");
Type del = ev.EventHandlerType;
MethodInfo mi = this.GetType().GetMethod("GestureDetected", BindingFlags.NonPublic | BindingFlags.Instance);
Delegate d = Delegate.CreateDelegate(del, this, mi); // <- "Error binding to target method."
ev.AddEventHandler(loader.LoadedGestures[i], d);
}
}
}
private void GestureDetected(object sender, GestureEventArgs e)
{
// do stuff
}
}
問題は、GestureEventArgs と GestureEventHandler が各 .dll で定義されているか、コンパイルされないことです。メイン クラスのアセンブリ内で作成されたオブジェクトとして GestureEventHandler をアタッチしようとしましたが、異なるアセンブリに同じオブジェクト タイプが 2 つあることに不満を感じています...
どんな助けでも大歓迎です。