Я уверен, что это невозможно, но здесь идет ..Глупый вопрос наследования в C#
У меня есть пользовательский класс в C# под названием Человек, который имеет несколько свойств, таких как возраст, рост и т.д.
Затем я создаю новый класс Employee, который наследуется от Person, но я еще не добавляю никаких других свойств Employee. Таким образом, его в основном просто Человек все еще, кроме его называемого Employee.
Теперь скажите, что у меня есть экземпляр человека, называемого SomePerson. Как я могу создать новый экземпляр Employee, который имеет все значения, которые он унаследовал от Person, и установить их в SomePerson. Как литье из человека в Сотрудник .. Но без меня, чтобы вручную указать каждый и каждое свойство, которое должно быть установлено ..
Что-то вроде ..
Employee NewEmployee = (Employee)SomePerson;
Но, конечно, вы получите сообщение об ошибке говоря: «Невозможно преобразовать Лицо в Работника» и т. д.
Является ли AutoMapper единственным практичным решением для подобных действий, если вы говорите, что у объектов было 300 объектов?
UPDATE:
Авто-Mapper не кажется обрабатывать свои объекты ..
Employee SomeEmployee = EmployeeRepository.GetEmployee(SomeEmployeeID);
// Populate the ViewModel with the Person fetched from the db, ready for editing..
VMEmployee EmployeeToEdit = Mapper.Map<Employee, VMEmployee>(SomeEmployee);
// ViewModel based on Employee with Validation applied..
[MetadataType(typeof(Employee_Validation))]
public class VMEmployee : Employee
{
// Absolutely nothing here
}
где "Сотрудник" автоматически генерируется с помощью LINQ к SQL ..
Поиск нужного решения называется множественным наследованием в C#, которого не существует. – too
Я бы удалил наследование «VMEmployee: Employee». Вам необходимо определить свою модель представления с подмножеством свойств из вашей модели домена Employee. –
Почему я снова использую DataAnnotations? Если я вручную переучитываю каждое свойство 4 раза, это становится смешным. Один раз в каждой из двух ViewModels и один раз в каждом из двух классов проверки. Это совершенно смешно. Просто для проверки в двух разных ситуациях. Я мог бы также написать валидацию по старой школе. Должен быть более разумный способ. В противном случае DataAnnotations бесполезны. – Aaron