這爲什麼不工作,我如何使它工作?在這種情況下,M直接實現IMessage,我得到一個InvalidCastException。C#帶有變量類型參數的Cast類。代碼片段解釋它
public void Subscribe<M>(IMessageListener<M> listener) where M : IMessage
{
IMessageListener<IMessage> l = (IMessageListener<IMessage>)listener;
}
不應該鑄造IMessageListener<M>
到IMessageListener<IMessage>
工作時M
實現IMessage
?
對不起,我不知道如何描述它。
//編輯 的IMessageListener類看起來是這樣的:
public interface IMessageListener<M> where M : IMessage
{
void ProcessMessage(M message);
}
糟糕!對於那個誤導性的答案,我很抱歉 - 我剛剛根據我以前讀過的內容發佈了它。希望這個答案可以幫助你 - http://stackoverflow.com/questions/19166133 – potatopeelings
爲什麼你需要施放它?將它用作'IMessageListener' - 稍後調用'listener.ProcessMessage(message)'。 –