Вопрос наследования C # - PullRequest
       19

Вопрос наследования C #

2 голосов
/ 19 января 2010

Я использую API, который имеет класс "Member". Я хочу расширить это, поэтому я создал "MemberProfile", который наследуется от "Member"

У меня есть проблема с созданием конструктора для этого класса. Я хочу что-то вроде следующего

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

Как будет выглядеть конструктор на MemberProfile. Нужно ли делать какие-то актеры?

Ответы [ 4 ]

10 голосов
/ 19 января 2010

Я предлагаю добавить поле Member в класс MemberProfile и инициализировать его в конструкторе. Не наследуй от Member.

public class MemberProfile {
    public Member Member { get; private set; }
    public MemberProfile(Member member) { Member = member; }
}

Если вы действительно хотите наследовать от Member, вам придется скопировать все свойства из переданного аргумента в новый экземпляр вручную.

3 голосов
/ 19 января 2010

Мердад правильный;MemberProfile должен не наследоваться от Member.

Делая некоторые предположения относительно контекста вашего приложения, вполне вероятно, что в какой-то момент в будущем один участник может иметь более одного профиля

MemberProfile <<--uses--> Member

, а не

MemberProfile --is-a--> Member
2 голосов
/ 19 января 2010

Использовать шаблон декоратора

0 голосов
/ 19 января 2010

Вам необходимо создать конструктор, который принимает член в качестве аргумента и делает полную копию параметров.

public class MemberProfile : Member
{
    public MemberProfile(Member member)
    {
        base.field1 = member.field1;
        base.field2 = member.field2;
            .
            .
        base.fieldn = member.fieldn;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...