C#继承问题

时间:2010-01-18 21:07:54

标签: c# inheritance polymorphism

我正在使用具有“Member”类的API。我想扩展这个,所以我创建了“MemberProfile”,它继承自“Member”

我在为这个类创建构造函数时遇到了一些问题。我希望得到以下内容

    var member = Member.GetCurrentMember();
    var memberProfile = new MemberProfile(member);

MemberProfile上的构造函数如何显示。我需要做某种演员吗?

4 个答案:

答案 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;
    }
}