我想设置一个类,以便可以使用对象初始值设定项初始化它,但它包含一些集合。理想情况下,我想客户端代码能够做到: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)。
有没有办法解决这个问题?