【发布时间】:2012-02-09 03:19:17
【问题描述】:
我有一些电子邮件模板,在每个模板中我都有一个页眉和页脚,它们都共享相同的信息。
页眉和页脚用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 属性是否代表相同的信息?
-
基类中的 CompanyName 属性代表我的公司,视图模型中的 CompanyName 代表一个客户。我最终用前缀“Our”重命名了 EmailModel 中的属性。
-
@nawfal 这个问题已有 3 年历史,答案已被接受,您现在投票结束了吗?找一个生活伙伴。
-
我不确定 SO 是否有这样的重复政策。无论年龄大小,我总是看到重复的问题被关闭。没有什么私人的,只是尽我所能,让这里变得更好。
标签: asp.net-mvc-3