Я разрабатываю класс, который создает экземпляр класса (с использованием Activator.CreateInstance
), который указан для класса (либо как параметр типа, либо как параметр для конструктора), поэтому довольно бессмысленно создавать экземпляр класса, когда класс создает экземпляр в любом случае, поэтому переход к типу с использованием дженериков имеет смысл. Например.Доля кода между классом и общим классом
var foo = new Foo<Bar>();
Однако это делает класс нельзя использовать во время выполнения Тхо, так как параметр типа объявлен во время компиляции.
Чтобы использовать это во время выполнения, конструктор должен принять параметр в качестве аргумента. Например.
var foo = new Foo(new Bar());
Остальные кода в классах одни и те же, так что если это были два разных классов, то было бы много повторяющегося кода.
Вопросы:
- Как разделить код и избежать дублирования кода?
- Может (и должен) это быть двумя конструкторами того же класса?
- Я принимаю неправильный подход? Может быть
new Foo(typeof(Bar))
?
Пожалуйста, объясните, в чем заключается цель этого. В настоящее время это неясно/слишком широко. Я предполагаю, что для «кода обмена» - состав/наследование. Два конструктора - да, возможно. 'typeof (Bar)' - это что-то другое - зависит от того, чего вы хотите от –
Мне любопытно, как выглядит ваша реализация. Из вопроса это больше похоже на кандидата на наследование, чем на общий. Или, если 'Foo' зависит от' Bar', тогда общие свойства/методы могут вызвать вызов другого и избегать дублирования. – Theo
* Я разрабатываю класс, который создает экземпляр класса, который указан для класса (либо как параметр типа, либо как параметр для конструктора), поэтому совершенно бессмысленно создавать экземпляр класса, когда класс создает экземпляр в любом случае, поэтому для прохождения в типе с использованием дженериков имеет смысл. * ... да? –