У меня есть метод, когда мне нужно динамически изменять класс, используемый в зависимости от пользовательских настроек, как показано ниже, класс dEnvelope должен также инициализировать свои свойства, чтобы заполнить все подклассы и использовать их одинаково эти различные классы года имеют точную структуру, но бизнес-логика отличается в своих внутренних методахИнициализировать классы динамических типов
dynamic dEnvelope;
if (UserYear==2013)
dEnvelope = new Years.Y2013.DataEnvelope();
else
dEnvelope = new Years.Y2012.DataEnvelope();
dEnvelope.InnerClass= Activator.CreateInstance(Type.GetType(dEnvelope.InnerClass));
Однако я получаю сообщение об ошибке при выполнении Activator.CreateInstance линии
{ "Значение не может быть пустым. \ r \ nParameter name: typeName "}
Я что-то пропустил от использования динамического типа? Есть ли лучший способ динамического выбора правильного класса, который будет использоваться во время выполнения?
Years.Y2013 и Years.Y2012 - это пространства имен, не являющиеся классами. – Maya
это нулевой указатель; Type.GetType ("namespace.qualified.TypeName") работает только тогда, когда тип найден в файле mscorlib.dll или в текущей исполняемой сборке. Проверьте код –
dEnvelope.InnerClass = Activator.CreateInstance (Type.GetType (dEnvelope.InnerClass)); –