c# – 将操作存储在单个集合中以备以后使用

前端之家收集整理的这篇文章主要介绍了c# – 将操作存储在单个集合中以备以后使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图持有内存的一系列Action< T>类型的引用其中T是可变类型

我已经找到一个动态的解决方案,但我不喜欢使用动态的解决方

public class MessageSubscriptor:IMessageSubscriptorPool
{
    Dictionary<Type,Action<dynamic>> Callbacks = new Dictionary<Type,Action<dynamic>>();
    public void Subscribe<T>(Action<T> callback) where T :IMessage
    {
        Callbacks.Add(typeof(T),(obj) => callback(obj));
    }
}

有没有人知道更好的处理方法
提前致谢.

解决方法

动作及LT; T>是代表,因此…
public class MessageSubscriptor:IMessageSubscriptorPool
{
    private readonly Dictionary<Type,Delegate> _callbacks = new Dictionary<Type,Delegate>();

    public void Subscribe<T>(Action<T> callback) where T :IMessage
    {
        _callbacks.Add(typeof(T),callback);
    }
}

然后,说你想调用一个,你可以简单地执行一个演员:

public void Invoke<T>(T message) where T :IMessage
{
    Delegate callback;
    if (_callbacks.TryGetValue(typeof(T),out callback))
        ((Action<T>)callback).Invoke(message);
}

猜你在找的C#相关文章