Есть ли конструкция языка C#, которая позволит мне добавлять элементы в свойство только для чтения в конструкторе? Я хочу сделать что-то вроде этого:Добавить в сборку readonly в конструкторе?
public class Node{
public IList<Node> Children {get; protected set;}
public Node(){
Children = new ObservableList<Node>();
}
}
... в моем коде где-то ...
var node = new Node {Children.Add(new Node())};
(не большой пример, но я надеюсь, что это получает представление в поперечнике) ...
UPDATE
OK жаль, что я должен быть более четким. Я не писал этот класс Node
, и я не могу его изменить. Я спрашиваю, есть ли концепция языка C#, которая позволит мне добавить к сборке readonly в конструкторе без параметров во втором фрагменте, если класс Node
не изменен.
Скрытие 'set' не делают коллекции неизменны , если вы можете получить ссылку на IList, вы можете вызвать «Добавить» на нем. –
Ключевое слово 'readonly' применяется только к полям, а не к свойствам. Он также защищает только поле, а не объект, на который он ссылается. Поэтому добавление 'readonly' в ObservableCollection не приведет к фактической коллекции только для чтения, а только к полю, которое ссылается на нее. – Chris
@ Крис да, я избавился от этого ... это то, что я получаю от «кодирования с бедра» ... –