Я ищу способ назначения базовой части производного класса из переменной базового класса без необходимости однозначно присваивать каждому присваиваемому свойству один за другим. Иными словами: начиная с переменной базового класса, я бы хотел получить переменную производного класса, которая имеет все назначаемые базовые свойства, не задумываясь о том, что они собой представляют, или редактировать код, если они изменение.присвоение базовой части производного класса
Я создаю модели представления как производные классы из базового класса Entity, который будет редактироваться. Обычно это просто добавить идентификаторы для свойств навигации, чтобы они могли быть возвращены 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
};
и пусть фигурка компилятора, какие поля для назначения. Есть ли способ сделать это?
Спасибо за понимание!
Возможно, [AutoMapper] (http://automapper.org/) может вам помочь. –
Согласен, что-то вроде Automapper - единственный способ – swannee
Спасибо, Андре (bedanke mich) и Эрик. AutoMapper кажется немного тяжелее, чем я хотел, хотя, возможно, это именно то, что мне нужно. Странно, что нет прямого способа сказать это на C#. В C-дни я буду стремиться к 'memcpy (... sizeof (Thing))'. –