初始化动态类型的类

问题描述:

我有一个方法,我需要根据用户设置动态地更改所使用的类,如下所示,类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 \ n参数名称:typeName“}

我是否错过了动态类型的用法?是否有更好的方式来动态选择正确的类,以便在运行时使用?

我想你应该首先通过构造函数初始化类“年”的变量,你应该尝试访问该方法。即dEnvelope = new Years().Y2013.DataEnvelope();

而且为了更好的理解,还请显示你的代码片段。

+0

Years.Y2013和Years.Y2012是名称空间而非类。 – Maya 2013-03-12 08:54:36

+1

它是空指针; Type.GetType(“namespace.qualified.TypeName”)仅在mscorlib.dll或当前正在执行的程序集中找到该类型时才起作用。请检查您的代码 – 2013-03-12 08:59:46

+0

dEnvelope.InnerClass = Activator.CreateInstance(Type.GetType(dEnvelope.InnerClass)); – 2013-03-12 09:00:18