У меня есть несколько шаблонов электронной почты, и в каждом шаблоне у меня есть верхний и нижний колонтитулы, которые имеют общую информацию.Должен ли я наследовать модели в моей модели просмотра или использовать свойство для модели
Верхние и нижние колонтитулы представлены EmailModel.cs
public class EmailModel
{
public string CompanyName { get { return ConfigurationManager.AppSettings["CompanyName"]; } }
public string PhoneNumber { get { return ConfigurationManager.AppSettings["PhoneNumber"]; } }
public string FacebookUrl { get { return ConfigurationManager.AppSettings["FacebookUrl"]; } }
public string TwitterUrl { get { return ConfigurationManager.AppSettings["TwitterUrl"]; } }
public string YouTubeUrl { get { return ConfigurationManager.AppSettings["YouTubeUrl"]; } }
//Additional methods for sending these templates as emails
}
Теперь для конкретного шаблона электронной почты у меня есть модель представления. NewSignUpEmailViewModel.cs
Должен ли я это сделать:
public class NewSignUpEmailViewModel : EmailModel
{
public string FirstName { get; set; }
public string CompanyName { get; set; }
public string UserName { get; set; }
public Guid UserId { get; set; }
}
или это:
public class NewSignUpEmailViewModel
{
public EmailModel Email {get; set;}
public string FirstName { get; set; }
public string CompanyName { get; set; }
public string UserName { get; set; }
public Guid UserId { get; set; }
}
Я просто использовал электронную почту в качестве примера, есть плюсы/минусы каждого?
Единственное, что я вижу, это то, что в некоторых случаях вы столкнетесь с проблемой дублирования имени свойства.
Да, у вас уже есть конфликт свойств CompanyName при наследовании. Я лично предпочел бы состав над наследованием. Имеют ли свойства 2 CompanyName одну и ту же информацию? – danludwig
Свойство CompanyName в базовом классе представляет мою компанию, а CompanyName в модели представления представляет клиента. Я закончил переименование свойств в EmailModel с префиксом «Наш». –
Возможный дубликат [ASP.NET MVC Architecture: ViewModel по составу, наследованию или дублированию?] (Http://stackoverflow.com/questions/6954102/asp-net-mvc-architecture-viewmodel-by-composition-inheritance-or -duplication) – nawfal