У меня есть следующий класс:
public class Foo
{
public List<Bar> Bars {get; internal set;}
}
Теперь я хочу сделать Bars
a ReadOnlyCollection
, чтобы содержимое Bars
не могло быть публично изменено:
public class Foo
{
public ReadOnlyCollection<Bar> Bars {get; internal set;}
}
Теперь, если у меня есть класс в той же сборке, которому нужно добавить элементы в Bars
, каков наилучший способ сделать это?
Вот как я это делаю сейчас:
public class FooHelper
{
public FooHelper()
{
Foo foo = new Foo();
//Code to modify the collection
List<Bar> bars = foo.Bars.ToList<Bar>();
bars.Add(new Bar("BAR BAR BAR"));
foo.Bars = bars.AsReadOnly();
}
}
Я понял, что было бы проще, если бы у меня был рядовой List<Bar>
в Foo
примерно так:
public class Foo
{
private List<Bar> _bars;
public ReadOnlyCollection<Bar> Bars {get { return _bars.AsReadOnly; }}
}
... но как при таком подходе добавить элемент в _bars
?
Должен ли я сделать его внутренним, сделать его внутренним свойством или добавить новый внутренний метод AddBar()
?