aを anにDictionaryマップするa を作成したいのですが、キーを特定の親クラスに由来する型にしたいと考えています。だから私は次のようなことをしたい:TypeAction
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 のサブクラスであるクラスの Type を取得したくありません。タイプを使用するよりも良い方法はありますか?
編集:私が本質的にやろうとしているのは、アプリのさまざまな部分がイベントタイプに関心を登録し、そのタイプのイベントが発生したときに呼び出されるアクションを提供できるディスパッチサービスを作成することです. だから、次のようなものを想像してください
service.RegisterInterest(typeof(MyEvent), myAction)
WheremyActionはタイプですAction<MyEvent>(元の投稿には入れなかったが、プレーンの代わりに持つべきものAction)。
次に、アプリの他の部分でできること
service.TriggerEvent(typeof(MyEvent))
これにより、上記のように登録されたすべてのAction<MyEvent>インスタンスが呼び出されます...実際には、単一の ではなく aにDictionaryマップされます。TypeList<Action<Event>>Action