Могу ли я инициализировать производный класс экземпляром базового класса? - PullRequest
1 голос
/ 12 февраля 2010

Пример:

public class MyList<T> : List<T> {
    public MyList(List<T> list) {
        this = list;  // this is basically what I want, but doesn't work
        base = list;  // this also doesn't work
    }
}

Какие-нибудь решения? Или я просто пытаюсь достичь плохой идеи?

Мотивация: я хочу добавить пользовательскую функцию в объект списка.

Ответы [ 4 ]

3 голосов
/ 12 февраля 2010

Если вы используете .Net framework 3.5, не будет ли проще определить метод расширения в списке. Что-то вроде ...

public static class MyListExtensionClass
{
    public static void MyList<T>(this List<T> list)
    {
        // Your stuff
    }
}
1 голос
/ 12 февраля 2010

Вы не можете сделать:

public MyList(List<T> list) : base(list)

В качестве альтернативы, вы не можете использовать метод расширения для объекта List?

0 голосов
/ 12 февраля 2010
public class MyList<T> : List<T>
{
  public MyList(List<T> list)
  {
    AddRange(list);
  }
}
0 голосов
/ 12 февраля 2010

общедоступный MyList (список списка): база (список)

Это вызовет следующий конструктор базового класса (в данном случае List):

public List(IEnumerable<T> collection);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...