実行時に Prism モジュール間でイベント サブスクリプションを動的に接続しようとしているため、Reflection を使用して EventAggregator イベントをサブスクライブしたいと考えています。(Silverlight 5、Prism、MEF を使用しています)。
私が達成したい_eventAggregator.GetEvent<MyType>().Subscribe(MyAction)
のは、モジュールの 1 つで呼び出しを行うことですが、呼び出しに行き詰まってい_eventAggregator.GetEvent<MyType>()
ます。そこから電話するにはどうすればよいSubscribe(MyAction)
ですか?
私の Event クラスがpublic class TestEvent : CompositePresentationEvent<string> { }
. これはコンパイル時にはわかりませんが、実行時の Type はわかります。
これが私がこれまでに得たものです:
Type myType = assembly.GetType(typeName); //get the type from string
MethodInfo method = typeof(IEventAggregator).GetMethod("GetEvent");
MethodInfo generic = method.MakeGenericMethod(myType);//get the EventAggregator.GetEvent<myType>() method
generic.Invoke(_eventAggregator, null);//invoke _eventAggregator.GetEvent<myType>();
正しい方向へのポインタをいただければ幸いです。