我有如下的字典:你如何動態地動作動作類型<T>?
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);
}
'evt.Subscribe'方法的簽名是什麼? –
訂閱方法得到一個動作
然後,你可能需要改變你的字典是'Dictionary>'類型。除非你可以改變這種方法。 –