我想创建将 aDictionary
映射Type
到 a 的a Action
,但我希望键是来自特定父类的类型。所以我想做类似的事情:
class Container
{
private Dictionary<Type, Action> dict;
public void AddAction(Type t, Action a) where t : typeof(SomeParentClass)
{
dict[t] = a;
}
}
该AddAction
方法仅接受t
作为某些特定类的子类的类类型的值。我已经看到在 Java 中使用extends
关键字完成了类似的操作,但如果可能的话,我无法弄清楚如何在 C# 中执行此操作。
编辑:为了澄清,我不希望 AddAction 方法采用 SomeParentClass 的实例,而是采用作为 SomeParentClass 子类的类的类型。有没有比使用类型更好的方法?
编辑:我实际上要做的是创建一个调度服务,其中应用程序的各个部分可以注册对 Event 类型的兴趣,并提供一个在触发该类型的事件时调用的 Action。所以想象一下
service.RegisterInterest(typeof(MyEvent), myAction)
Where myAction
is of type Action<MyEvent>
(我没有在原始帖子中放入但应该有而不是 plain 的东西Action
)。
然后应用程序的其他部分可以做
service.TriggerEvent(typeof(MyEvent))
这会导致所有Action<MyEvent>
按上述方式注册的实例都被调用......所以实际上Dictionary
将 a 映射Type
到 a List<Action<Event>>
,而不是单个Action
。