Проблема в том, что Activator.CreateInstance(Type, object[])
не учитывает непубличные конструкторы.
Исключения
MissingMethodException: нет соответствия
публичный конструктор найден.
Это легко показать, изменив конструктор на public
видимость; тогда код работает правильно.
Вот один из обходных путей (проверено):
BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance;
CultureInfo culture = null; // use InvariantCulture or other if you prefer
object instantiatedType =
Activator.CreateInstance(typeToInstantiate, flags, null, parameter, culture);
Если вам нужен только конструктор без параметров, это также будет работать:
//using the overload: public static object CreateInstance(Type type, bool nonPublic)
object instantiatedType = Activator.CreateInstance(typeToInstantiate, true)