我有一本字典 - 其中的關鍵是System.Type
。我不會進一步限制字典條目;但是,字典只能通過公共類接口公開。我模仿一個事件系統。約束System.Type作爲類型安全的通用參數
的System.Collections.Generic
Dictionary
模樣:
private Dictionary<Type, HashSet<Func<T>>> _eventResponseMap;
一個暴露詞典具有以下簽名的方法:
public bool RegisterEventResponse<T>(Type eventType, Func<T> function)
不過,我不希望類用戶能夠通過此簽名將任何System.Type
添加到字典中。有沒有辦法可以進一步限制Type
參數?
我真正想要的是一個類似於(僞代碼):
public bool RegisterEventResponse<T>(Type eventType, Func<T> function) where Type : ICustomEventType
上面的代碼中可能存在一些垃圾。如果你可以看看它,那會很棒。我在黑暗中拍攝,概念上(將根據建議更改) – Thomas
而不是'Type',您可以使用另一種通用類型,如'T2',並將其限制爲您想要的特定類型。 [這已經在這裏回答](http://stackoverflow.com/a/4834066/4767498)使用策略模式。如果沒有使用正確的類型,這種方法會給你編譯時錯誤。更簡單的方法是在運行時檢查類型。 –