Можно ли применять правила или выдавать ошибку при использовании инициализаторов объектов в C#? Я хотел бы бросить ошибку компилятора или предупреждение, если объект инициализирован, но отсутствует определенное свойство.Ошибка инициализации объекта инициализатора
public class Party
{
public string Name { get; set; }
public string Date { get; set; }
public Location Location { get; set; }
}
public class SignUpForParty
{
public void DoSomething()
{
Party party = new Party()
{
Name = "New Years Party!",
Date = "Dec 31, 1999"
// Show WARNING/ERROR here because no Location given
};
}
}
По существу, я искал способ, чтобы убедиться, что все объекты типа партий создаются с действительными данными для каждого экземпляра.
Очевидно, что я мог бы сделать это с помощью перегруженных конструкторов, но в некоторых случаях у меня есть много свойств, и конструкторы записи, чтобы соответствовать, беспорядочны. Я хотел бы следить за более чистым стилем C#.
Obj p = new Obj(1, 2, 3,...n); // too many properties to be pretty
Вы можете поместить каждый параметр конструктора в свою линию, и это будет выглядеть очень похоже. Вы упомянули перегрузку конструктора, но вы также сказали, что хотите установить * all * properties set, который предлагает один uber-конструктор. – dlev
Спасибо за ответы. Я запутываю инициаторов объектов с конструкторами. Я хотел получить лучшее из обоих миров - создание объекта с принудительным исполнением, но с легким стилем инициаторов объектов. Я не хотел, чтобы кучка конструкторов uber. То, что происходит с @ reed-copsey, также верно в моем сценарии, поскольку то, что требуется, должно быть в конструкторе, и для инициаторов следует оставить необязательный материал. – daviddeath