Нет, это совершенно неправильное решение.
Вам определенно нужен конструктор по умолчанию, иначе вы не сможете создавать объекты таким образом.
Обратите внимание, что вы можете использовать конструктор "не по умолчанию" (здесь я понимаю "по умолчанию" как означающий "без параметров"), но вы все равно должны передавать требуемые параметры, а не только по типу, но и по смыслу.
Поскольку вы прибегаете к Activator.CreateInstance
, я предполагаю, что вы мало что знаете о рассматриваемом типе, кроме его объекта Type
. В этом (общем) случае вы не должны просто передавать некоторые нечетные значения в конструктор в надежде, что это будет иметь смысл для рассматриваемого типа.
Если, с другой стороны, у вас есть какой-то контракт, в котором вы можете сказать: «Я знаю, что этот тип поддерживает контракт X», вы можете изучить использование интерфейса и вызов метода в этом интерфейсе после создания объекта. Затем интерфейс будет иметь известный метод (известный коду, который должен создать экземпляр), который вы вызовете с помощью известного (известного как знание количества, их типов, а также их значения) параметры.
Просто случайным образом (передача 0 и null
только для соответствия подписи так же произвольна, как передача 42 и какого-то странного объекта) передача параметров в конструктор небезопасна совсем.
Пример с интерфейсом:
object instance = Activator.CreateInstance(someTypeObject);
((ISomeInterface)instance).Initialize(your, specific, parameters, here);
Что вам может понадобиться, так это структура IoC, чтобы вы могли сказать: «Всякий раз, когда кому-то нужен экземпляр этого класса, вот как его построить».
Погляди:
person
Lasse V. Karlsen
schedule
23.03.2013