【发布时间】:2015-07-11 21:55:42
【问题描述】:
为什么这不起作用,我该如何使它起作用?在这种情况下,M 直接实现 IMessage,我得到一个 InvalidCastException。
public void Subscribe<M>(IMessageListener<M> listener) where M : IMessage
{
IMessageListener<IMessage> l = (IMessageListener<IMessage>)listener;
}
当M 实现IMessage 时,不应该将IMessageListener<M> 转换为IMessageListener<IMessage> 工作吗?
抱歉标题不好,不知道怎么形容。
//编辑 IMessageListener 类如下所示:
public interface IMessageListener<M> where M : IMessage
{
void ProcessMessage(M message);
}
【问题讨论】:
-
糟糕!很抱歉这个误导性的答案 - 我只是根据我以前读过的东西发布它。希望这个答案对您有所帮助 - stackoverflow.com/questions/19166133
-
为什么需要投射它?只需将其用作
IMessageListener<IMessage>- 稍后致电listener.ProcessMessage(message)。
标签: c# type-conversion type-parameter