ばかげた質問で申し訳ありませんが、把握できないようです。
私は2つのクラスを取得Customer
しMember
ました。
Customer.cs
public class Customer
{
public virtual string Firstname { get; set; }
public virtual string Middlename { get; set; }
public virtual string Lastname { get; set; }
}
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()
{
MemberRegistrationDate = DateTime.Now;
MembershipStatus = MembershipStatusEnum.Active;
}
}
MemberがCustomerである継承である必要があると確信していますが、必死になっている場合は構成に頼ることができます。
ここでは、すべての仮想を使用するように強制する NHibernate を使用していることに注意してください。
単一の顧客オブジェクトが与えられた場合、既存の Customer から新しい Member をどのようにする必要がありますか?
ここで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 - ある種のリフレクション ヘルパーを使用して 2 つのオブジェクト間をマッピングします。
確かにそれは実行可能なオプションですが、私は現在 DDD について学んでおり、そのようなヘルパーをドメイン層に配置しても問題ないのでしょうか?
いくつかの提案が必要です、ありがとう!