Ну, краткий ответ, потому что ваш вызов DynamicInvoke
является вызовом с поздней привязкой и на самом деле не знает, нужен ли ему даже параметр.
MSDN
Динамически вызывает (с поздним связыванием) метод, представленный текущим делегатом.
В качестве примечания:
Учитывая, что вы знаете тип передаваемого в Action
, вам, вероятно, следует реорганизовать свой код, чтобы напрямую вызывать действия, и не использовать DynamicInvoke
, если вы можете избежать его, поскольку это повлияет на производительность.Если вы не можете избежать этого из-за не показанных ограничений, пусть будет так.
List<Action<Types.MessageBase<TMessageType>>> subscriptions;
if (register.TryGetValue(typeof(TMessageType), out subscriptions))
{
foreach (var subscription in subscriptions)
{
Console.WriteLine("Invoking....");
subscription(message);
}
}
Конечно, я не знаю, что будет связано с рефакторингом вызова TryGetValue
.