我正在使用具有“Member”类的API。我想扩展这个,所以我创建了“MemberProfile”,它继承自“Member”
我在为这个类创建构造函数时遇到了一些问题。我希望得到以下内容
var member = Member.GetCurrentMember();
var memberProfile = new MemberProfile(member);
MemberProfile上的构造函数如何显示。我需要做某种演员吗?
答案 0 :(得分:10)
我建议在Member
类中添加MemberProfile
字段,并在构造函数中初始化它。不要继承Member
。
public class MemberProfile {
public Member Member { get; private set; }
public MemberProfile(Member member) { Member = member; }
}
如果你真的想继承Member
,你必须手动将传递参数的所有属性复制到新实例。
答案 1 :(得分:3)
Mehrdad是正确的; MemberProfile应不继承自Member。
对您的应用程序上下文做出一些假设,似乎在将来某个成员可能拥有多个配置文件时,这似乎是完全合理的。
MemberProfile <<--uses--> Member
而不是
MemberProfile --is-a--> Member
答案 2 :(得分:2)
答案 3 :(得分:0)
您需要创建一个构造函数,该构造函数将Member作为参数并执行参数的深层复制。
public class MemberProfile : Member
{
public MemberProfile(Member member)
{
base.field1 = member.field1;
base.field2 = member.field2;
.
.
base.fieldn = member.fieldn;
}
}