我想設置一個類,以便可以使用對象初始值設定項初始化它,但它包含一些集合。理想情況下,我想客戶端代碼能夠做到:C#對象初始值設定項和集合
MyClass myObj = new MyClass
{
Name = "Name",
Contents = new[]
{
"Item1",
"Item2"
}
}
然而,在Contents
需要一個BindingList<string>
。底層字段存儲對該列表的只讀引用,並且我希望制定者基本上執行Clear
,然後AddRange
來設置內容。
我不能讓Contents
財產IEnumerable<string>
,因爲客戶端代碼將不會看到Add
方法,等等,至少在沒有第一投射它。我不能使它成爲BindingList<string>
,因爲如果我設置它,我需要構建一個新的綁定列表來傳遞給它..這可能是可能的,但我寧願不介紹構造一個新的BindingList<string>
專爲此目的的低效率把它傳遞給財產製定者。
能夠做的理想事情是讓getter返回BindingList<string>
,setter接受IEnumerable<string>
,但C#不允許屬性上的getter/setter具有不同的類型。
呵呵,隱含在鑄造BindingList<string>
和IEnumerable<string>
之間是一個禁忌,所以我不能那麼做(http://blogs.msdn.com/b/peterhal/archive/2005/06/20/430929.aspx)。
有沒有辦法解決這個問題?