Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# Как бы так использовать констуктор абстрактного класса, не переопределяя его / 6 сообщений из 6, страница 1 из 1
21.03.2014, 13:51
    #38592887
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# Как бы так использовать констуктор абстрактного класса, не переопределяя его
Как бы так использовать констуктор абстрактного класса, не переопределяя его
то есть:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  public abstract class MyBase
  {
    private string tt;
    public MyBase(string ss)
    {
      tt = ss;
    }
  }
  public class MyInst : MyBase
  {
  }


я хочу
Код: c#
1.
var ee = new MyInst("ww");


ну или может как-то по-другому извернуться. Дело в том, что дочерних классов будет много, но конструктор у всех одинаковый и может быть обработан на уровне базового класса
...
Рейтинг: 0 / 0
21.03.2014, 14:18
    #38592923
sanekoffice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# Как бы так использовать констуктор абстрактного класса, не переопределяя его
Это чтоли?

Код: c#
1.
2.
3.
4.
   public class MyInst : MyBase
    {
        public MyInst(string ss) : base(ss) { }
    }
...
Рейтинг: 0 / 0
21.03.2014, 14:19
    #38592924
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# Как бы так использовать констуктор абстрактного класса, не переопределяя его
[quot Shocker.Pro]
то есть:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  public abstract class MyBase
  {
    private string tt;
    public MyBase(string ss)
    {
      tt = ss;
    }
  }
  public class MyInst : MyBase
  {
  }


Не скомпилируется.
Shocker.ProДело в том, что дочерних классов будет много, но конструктор у всех одинаковый и может быть обработан на уровне базового класса
При наличии в базовом классе параметризированного конструктора в дочерних он должен быть в любом случае.
...
Рейтинг: 0 / 0
21.03.2014, 14:31
    #38592946
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# Как бы так использовать констуктор абстрактного класса, не переопределяя его
sanekoffice, Сон Веры Павловны - мне просто не хочется плодить одинаковые конструкторы в каждом дочернем классе а потом менять их, если что-то поменяется.

Предложили вариант - создать в базовом классе статический метод, который будет порождать инстансы дочек, тогда определять конструкторы в дочках не понадобится - ща буду пробовать сделать так.
...
Рейтинг: 0 / 0
21.03.2014, 14:35
    #38592957
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# Как бы так использовать констуктор абстрактного класса, не переопределяя его
Изворачиваться. Вынести инициализацию из конструктора
как-то так можно
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
    public abstract class MyBase
    {
        public static T getInstance<T>(string ss) where T : MyBase, new()
        {            
            T inst = new T();
            inst.init(ss);
            return inst;
        }
        private string tt;
        protected MyBase()
        {
        }
        public virtual MyBase init(string ss)
        {
            tt = ss;
            return this;
        }
    }
    public class MyInst : MyBase
    {
    }

....
 var ee = MyBase.getInstance<MyInst>("ww");
...
Рейтинг: 0 / 0
21.03.2014, 14:38
    #38592965
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# Как бы так использовать констуктор абстрактного класса, не переопределяя его
Изопропил,

ага, так сейчас и пробую, спасибо
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# Как бы так использовать констуктор абстрактного класса, не переопределяя его / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]