我有一些电子邮件模板,每个模板中都有一个页眉和页脚,它们共享相同的信息。我应该在我的视图模型中继承模型还是为模型使用属性
页眉和页脚被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 2012-01-12 20:46:23
基类中的CompanyName属性代表我的公司,视图模型中的CompanyName代表客户端。我最终重命名了EmailModel中的属性,其前缀为“Our”。 – 2012-01-12 21:02:06
[ASP.NET MVC体系结构:ViewModel的组合,继承或重复?]的可能的重复?(http://stackoverflow.com/questions/6954102/asp-net-mvc-architecture-viewmodel-by-composition-inheritance-or - 复制) – nawfal 2015-01-12 20:24:22