Попробуйте это:
Type contextType = Type.GetType("CheckoutProcesses." + data.Case.ToString());
CheckoutContext output =
(CheckoutContext)Activator.CreateInstance(contextType, data);
Причина, по которой ваш код не работает, заключается в том, что Activator.CreateInstance
на самом деле не имеет нужной вам перегрузки. Так что вы можете удивиться, почему код компилируется вообще! Причина в том, что он имеет перегрузку, которая принимает (Type type, params object[] args)
, что соответствует вашему вызову метода, поэтому он компилируется, но во время выполнения он ищет ваш тип для конструктора, принимающего BindingFlags
и BookingContext[]
, что явно не то, что ваш тип .