初始化动态类型的类

时间:2013-03-12 08:42:41

标签: c# c#-4.0 dynamic reflection activator

我有一个方法,我需要根据用户设置动态更改使用的类,如下所示,类dEnvelope需要初始化其属性以填充所有子类并以相同的方式使用,所有这些不同的Year类都有确切的结构,但业务逻辑的内部方法不同

    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”}

我是否遗漏了动态类型的用法?有没有更好的方法动态选择在运行时使用的正确类?

1 个答案:

答案 0 :(得分:0)

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

还请展示您的代码段以便更好地理解。