私は辞書を持っています - そのキーはSystem.Type
です。私は辞書の項目をさらに制約しません。ただし、辞書はパブリッククラスインターフェイスを介してのみ公開されます。私はイベントシステムを模倣しています。タイプセーフティ用の汎用パラメータとしてSystem.Typeを制約します
System.Collections.Generic
Dictionary
次のようになります。しかし、私はクラスのユーザーができるようにしたくない
public bool RegisterEventResponse<T>(Type eventType, Func<T> function)
:
辞書は、次の署名を持って公開する方法のprivate Dictionary<Type, HashSet<Func<T>>> _eventResponseMap;
ワンこの署名によって辞書にを追加します。 Type
パラメータをさらに制約する方法はありますか?
public bool RegisterEventResponse<T>(Type eventType, Func<T> function) where Type : ICustomEventType
おそらく上記のコードにはゴミがあります。あなたがそれを過ぎて見ることができるなら、それはすばらしいでしょう。私はここ暗闇の中で概念的に撮影しています – Thomas
'タイプ'の代わりに、 'T2'のような別のジェネリックタイプを使用して、あなたが望む特定のタイプに制限することができます。 [これは既にここで回答されています](http://stackoverflow.com/a/4834066/4767498)ポリシーパターンを使用します。正しいタイプが使用されていない場合、この方法ではコンパイル時エラーが発生します。より簡単なアプローチは、実行時に型をチェックすることです。 –