我想要的是Dictionary<string, T>
,其中T
僅限於幾種類型之一。限制C#字典中的值類型:
如果C#有打字稿聯合類型它會看起來像Dictionary<string, bool | string | int | List<string> | List<int>>
我所做的是寫周圍字典的包裝類,它有一堆的Add()
個人支持的類型重載的,像GetBool()
和GetString()
的方法恢復。請參閱http://pastebin.com/av7nE5az
此方法有效,但冗長且冗長乏味,我認爲必須有更好的方法。有人得到一個?
編輯:關於爲什麼我想要這個的一些問題。基本上我想Dictionary<string, object>
,一個實例可能包含多種類型的值,但我希望以一種限制的方式(在遊戲中)使用它,所以可能的值類型的列表是有限的。我可以通過僅使用Dictionary<string, object>
並投射每個檢索來獲得,但我認爲如果我可以在數據結構本身中構建更多類型意識,它會更好。
只能限制噸至一個基本類型,由於int'和'名單'之間唯一的公共基類''是object'沒有辦法來限制'T'任何進一步。 –
如果C#允許'Dictionary |列表>',因爲在編譯時不會知道值的類型,所以迭代集合時會丟失類型安全性。我不知道你在努力達到什麼樣的目標,但是聽起來像一個包裝類可能是要走的路。 –
PoweredByOrange
@PoweredByOrange我認爲OP要允許'Dictionary'和'Dictionary '但不能'Dictionary ' - 不允許在一個字典中使用多個值類型。 –