具有通用参数的类型和动作的字典

我正在尝试使用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。


慕神8447489
浏览 163回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP