我有一些電子郵件模板,每個模板中都有一個頁眉和頁腳,它們共享相同的信息。我應該在我的視圖模型中繼承模型還是爲模型使用屬性
頁眉和頁腳被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