Я ищу способ присвоения базовой части производного класса из переменной базового класса, без необходимости явного присваивания каждому присваиваемому свойству одно за другим. Другими словами: начиная с переменной базового класса, я хотел бы получить переменную производного класса, в которой установлены все присваиваемые базовые свойства, без необходимости запоминать, что это такое, или редактировать код, если они изменить.
Я создаю модели представления как производные классы от базового класса сущности, которая собирается редактироваться. Обычно это просто для добавления идентификаторов для свойств навигации, чтобы они могли быть возвращены POST. Например:
public class ThingEditView : Thing
{
public int UsefulID { get; set; }
}
Привыкает так:
var foo = new ThingEditView
{
UsefulID = thisThing.Useful.ID,
A = thisThing.A,
B = thisThing.B,
/* and potentially many more properties from the base class Thing */
};
return View(foo);
Но у меня возникают проблемы, когда я добавляю свойства в базовый класс Thing
и забываю отредактировать все места, где я инициализирую ThingEditView
или ThingDetailView
и т. Д. Я хотел бы сказать,
var foo = new ThingEditView
{
base = thisThing,
UsefulID = thisThing.Useful.ID
};
и пусть компилятор выяснит, какие поля назначать. Есть ли способ сделать это?
Спасибо за понимание!