我正在尝试使用MessagePack获得一个简单的消息传递服务。
该服务应保留一个dictionary<type, Action<T>>,以便查找如何“处理”特定消息。
基本上,我有:
private Dictionary<Type, Action<IMessage>> subActions;
public void Subscribe<TMessage>(Action<TMessage> action) where TMessage : IMessage
{
subActions.Add(typeof(TMessage), action);
}
我得到:
Argument 2: cannot convert from 'System.Action<TMessage>' to 'System.Action<GameServer.Messages.IMessage>'
如果不清楚的话;消息“到达”为byte[]包含“类型代码”。从“类型代码”我得到的Type,并且应该然后能够查找适当Action服用。该Action应,显然,以TMessage作为参数。
关于为何编译器给我这个错误,我似乎不能得出合理的结论,尽管我怀疑它与Dictionary不在同一个上下文中有关TMessage。
相关分类