我明白一个动作只是一个预先声明的委托,它可以接受定义类型的单个参数。因此Action<String>
表示一个没有返回并接受单个字符串参数的方法。到现在为止还挺好。代理继承说明
在我的代码,我有这样的方法:
public void Send<TMessageType>(Types.MessageBase<TMessageType> message)
{
Console.WriteLine("Message Sent");
List<Delegate> subscriptions;
if (register.TryGetValue(typeof(TMessageType), out subscriptions))
{
foreach (Delegate subscription in subscriptions)
{
Console.WriteLine("Invoking....");
subscription.DynamicInvoke(message);
}
}
}
全体代表的订阅变量实际上实例化为行动。我的问题是,为什么我的代码工作?为什么我不需要将我的委托重新投入动作(这将是Action<TMessageType>
),然后我才能使用它?当然,默认的委托类型不知道需要什么参数?