Я пытаюсь создать класс, чтобы его можно инициализировать с помощью инициализатора объекта, но он содержит некоторые коллекции. В идеале я хотел бы код клиента, чтобы быть в состоянии сделать:Инициализаторы объектов 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# не позволяет геттерам/установщикам на свойстве иметь по-разному типы.
О, и неявное литье между BindingList<string>
и IEnumerable<string>
- это не-нет, поэтому я не могу этого сделать (http://blogs.msdn.com/b/peterhal/archive/2005/06/20/430929.aspx).
Есть ли способ обойти это?