2015-10-22 2 views
0

У меня есть класс Fred, конструктор которого принимает параметр parmA, который я хочу передать в инициализацию общего списка типа MultiCtorClass под названием MyList.Вызвать конструктор не по умолчанию из экземпляра общего списка

Конструктор по умолчанию для MultiCtorClass передает ParmB на его базу; Я хочу вызвать другой конструктор MultiCtorClass, проходящий в parmA от инициализации Fred.

Я на самом деле пытается сделать следующее:

public Fred(parmType parmA) 
    { 
     MyList = new List<MultiCtorClass(parmA)>(); 
    } 

Как это может быть достигнуто?

+0

Посмотрите в 'Reflection' для создания экземпляра списка элементов. Однако вы не можете сдерживать сам список только теми, которые были созданы с помощью определенного ctor. – SimpleVar

+0

Есть ли причина, по которой класс MultiCtorParm не может взять общий? –

+0

@Tim Barrass Только тот факт, что это все устаревший код, используемый во всей нашей системе, и внесение такого изменения приведет к огромному эффекту пульсации. Я ищу/надеюсь на простое быстрое решение/работу перед тем, как спуститься по маршруту рефакторинга – gas828

ответ

4

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

MyList.Add(new MultiCtorClass(...)); 

И вы можете выбрать свой конструктор по желанию есть :)

+0

И если вы хотите быть фантастическим: MyList = новый List \t {new MultiCtorClass (paramA)}; –

Смежные вопросы