私は以下のような辞書を持っています:
var composEvents = new Dictionary<Type, Delegate>
{
{
typeof (GetWorkflowAnalysisDealLevelViewDataCompletedEvent),
new Action<bool>(GetWorkflowAnalysisDealLevelViewDataCompleted)
},{
typeof (NoDataReturnedEvent),
new Action<NoDataReturnedParameters>(NoDataReturned)
}
};
次に、アクションをコールバックとして渡すさまざまなイベントにサブスクライブしていますが、各アクションのタイプはイベントごとに異なるため、次のようになります。
Action<bool>
Action<NoDataReturnedParameters>
アクションタイプを明示的にキャストせずに、以下のコードを動的に生成するにはどうすればよいですか?
foreach (var cEvent in composEvents)
{
var method = typeof(IEventAggregator).GetMethod("GetEvent", BindingFlags.Public | BindingFlags.Instance);
var generic = method.MakeGenericMethod(cEvent.Key);
dynamic evt = generic.Invoke(_eventAggregator, null);
var cancelationToken = evt.Subscribe((Action<bool>)cEvent.Value);
_compositeEvents.Add(evt, cancelationToken);
}