У меня есть ситуация, когда у меня есть куча общих свойств в модели представления, но есть определенные случаи, когда мне нужно ее расширять. Я создал пару странных моделей взглядов, которые я рассматриваю в представлениях, которые ожидают производную модель обзора. (Я понимаю, что я мог бы использовать Polymorphic Binder, но я доволен только проездом в производной модели представления на данный моментНеправильная практика иметь наследование от модели представления в Asp.net MVC?
код выглядит примерно так:.
public class CommmonViewModel
{
public int? CommonA{ get; set; }
public int? CommonB{ get; set; }
public int? CommonC{ get; set; }
}
public class SpecificViewModel1 : CommmonViewModel
{
public int? SpecificD{ get; set; }
}
public class SpecificViewModel2 : CommmonViewModel
{
public int? SpecificE{ get; set; }
}
код рецензент хочет, чтобы у меня три различные модели просматривать и дублировать код следующим образом:
public class SpecificViewModel1
{
public int? CommonA{ get; set; }
public int? CommonB{ get; set; }
public int? CommonC{ get; set; }
public int? SpecificD{ get; set; }
}
public class SpecificViewModel2
{
public int? CommonA{ get; set; }
public int? CommonB{ get; set; }
public int? CommonC{ get; set; }
public int? SpecificE{ get; set; }
}
Теперь имея в виду, что модели реальной жизни вид весьма немного более сложным, чем то, что я показал здесь, я ненавижу, что решение должно быть дублировать код, поскольку он чувствует себя довольно плохое нарушение o f СУХОЙ для меня.
Я знаю, что в целом есть основания полагать, что мы будем осторожны с наследованием и поддержкой композиции, но в его случае наследование работает отлично, тем более что эта часть системы, скорее всего, изменится в будущем.
Одним словом, он прав? это случай, когда я должен быть доволен дублированием кода? Каковы преимущества \ недостатки наследования в этом сценарии?
Спасибо за ваши мысли
Вы попросили пересмотровый код? Это, по-видимому, очень основано на мнениях, и могут быть некоторые бизнес-причины, характерные для вашей ситуации, которые могут диктовать причину, по которой виртуальная машина должна дублироваться. – sous2817
Зачем вам нужно переопределение? Вы можете просто определить модель базового класса и наследовать ее. Вы можете привязываться к общедоступным свойствам класса derrive для свойств, которые были унаследованы от его базового класса, без необходимости их переопределять. –
Я ожидаю, что рецензент прокомментирует * переопределение * 'CommonA' с идентичным свойством в определенных моделях. В чем смысл? –