Давайте рассмотрим пример: у меня есть класс, содержащий множество полей данных (только данные, никакого поведения). ):
Код: Выделить всё
class MyObject
{
// lots of fields painful to initialize all at once
// so we make fields mutable :
public String Title { get; set; }
public String Author { get; set; }
// ...
}
Код: Выделить всё
MyObject CreationExample(String someParameters)
{
var obj = new MyObject
{
Title = "foo"
// lots of fields initialization
};
// even more fields initialization
obj.Author = "bar";
return obj;
}
Код: Выделить всё
var immutableObj = obj.AsReadOnly();
Итак, существует ли какой-нибудь автоматический способ создания этого неизменяемого класса? Или другой способ разрешить изменчивость во время создания, но неизменность после инициализации?
Я знаю, что поля можно пометить как «только для чтения», но объект будет инициализирован вне класса. , а передача всех полей в качестве параметров конструктора кажется плохой идеей (слишком много параметров).
Подробнее здесь: https://stackoverflow.com/questions/261 ... of-a-class
Мобильная версия