如果这是一个愚蠢的问题,我很抱歉,但我似乎无法掌握。
我有 2 节课,Customer
并且Member
.
客户.cs
public class Customer
{
public virtual string Firstname { get; set; }
public virtual string Middlename { get; set; }
public virtual string Lastname { get; set; }
}
会员.cs
public class Member : Customer
{
public virtual string MemberId { get; set; }
public virtual string MemberRegistrationDate { get; set; }
public virtual string MembershipStatus { get; set; }
public Member()
{
MemberRegistrationDate = DateTime.Now;
MembershipStatus = MembershipStatusEnum.Active;
}
}
我很确定这必须是一个继承,其中成员是客户,但如果我绝望,我可以求助于组合。
请注意,这里我使用的是 NHibernate,它迫使我使用所有虚拟设备。
给定一个客户对象,现有客户的新成员应该如何?
我可以在这里想到 2 个选项:
1 - 使用 Member.cs 构造函数重新创建它的父属性
这是一件好事吗?我试图这样做:
public class Member : Customer
{
public virtual string MemberId { get; set; }
public virtual string MemberRegistrationDate { get; set; }
public virtual string MembershipStatus { get; set; }
public Member(Customer customer)
{
Firstname = customer.Firstname;
Middlename = customer.Middlename;
Lastname = customer.Lastname;
MemberRegistrationDate = DateTime.Now;
MembershipStatus = MembershipStatusEnum.Active;
}
}
但是 Resharper 警告我在构造函数中访问虚拟成员,我同意避免这种情况,并告诉我让 Member 成为一个不能有虚拟成员的密封类(不兼容 NHibernate)。
当有一天我向 Customer 类添加了一个新属性,而我忘记对 Member 构造函数做同样的事情时,这也引发了另一个问题。
2 - 使用某种反射助手在两个对象之间进行映射。
当然这是一个可行的选择,但我目前正在学习 DDD,我想知道是否可以将这样的助手放在域层中?
需要一些建议,谢谢!