我明白一個動作只是一個預先聲明的委託,它可以接受定義類型的單個參數。因此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>
),然後我才能使用它?當然,默認的委託類型不知道需要什麼參數?