Инертность как обходить базовый конструктор - PullRequest
1 голос
/ 23 октября 2010

Допустим, у меня есть отец и сын, которые должны быть не абстрактными, и я не хочу обойти отца, и вот что я сделал:

 public class D
{
    public D(int x) { }

    public D()
    {
        Console.WriteLine("D:constructor");
    }

}
public class E:D
{
    public E() : base(1)
    {
        Console.WriteLine("E:constructor");
    }

}

Есть ли еще более элегантный способ обходить конструктор отца?

РЕДАКТИРОВАТЬ: это просто пример, у меня есть причина, по которой инертность связана с божьей практикой, или просто потому, что c'or отличается, я должен построить другой дизайн?

Ответы [ 2 ]

0 голосов
/ 23 октября 2010

Это способ, которым базовый конструктор обрабатывается в c #.Единственное более элегантное решение, которое я мог бы предложить, - это сделать очень мало в вашем конструкторе по умолчанию в классе вашего отца.Возможно только инициализация правильных атрибутов, или, возможно, ничего не делать.Таким образом, если вы не хотите, чтобы он выводил «D: constructor», вы все равно можете использовать конструктор по умолчанию для E, не вызывая базовый конструктор, который требует int.

Проблема не в способеэто было разработано, это зависит от того, как вы создаете свои конструкторы.

0 голосов
/ 23 октября 2010

Нет способа обойти базовый конструктор. Даже если вы реализуете вышеизложенное, вы все равно проходите через конструктор «a», но это лучшее, что вы можете сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...