创建一个类型在字符串参数中的对象

sve*_*vit 2 .net vb.net reflection

我有一个TreeView,它包含节点.当用户单击某个节点时,应创建并显示相应的CrystalReport文档.

例如,我的节点的名称是:"PeriodReport1","PeriodReport2","PeriodReport3".我的CrystalReport文档命名相同:"PeriodReport1","PeriodReport2","PeriodReport3".

如何创建和显示正确类型的水晶报告文档?我可以这样做:

select case reportName
    case "PeriodReport1"
        dim myReport as new PeriodReport1
    case "PeriodReport2"
        dim myReport as new PeriodReport2
    ...
end select
Run Code Online (Sandbox Code Playgroud)

但可能有更好的方法来做到这一点.我可以使用反射来做到这一点吗?

Sky*_*ers 6

只要报告有一个默认的无参数构造函数,即你可以说新的PeriodReport ...

Activator.CreateInstance(Type.GetType("namespace.typename"))
Run Code Online (Sandbox Code Playgroud)