从字符串类名创建实例

时间:2014-02-03 18:45:46

标签: vb.net type-conversion

有没有办法实现这个目标?我有一个通过查询字符串传递的类名,我想根据它创建一个新实例。

我尝试过:

Private Function Carregar() As Object
    Dim bal = String.Concat("PROTBAL.", Request.QueryString("nomeBAL"))
    Dim ent = Request.QueryString("nomeENT")
    Dim codigo = Request.QueryString("codigo")
    Dim descricao = Request.QueryString("descricao")
    Dim teste = Activator.CreateInstance(Type.GetType(bal))
    Return teste.Listar()
End Function

事情是变量teste总是Nothing

1 个答案:

答案 0 :(得分:1)

假设你正确地连接了类名,这应该有效:

System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(bal)

修改

如果类型(类)可以/可能在另一个程序集中,那么这可以工作:

System.Reflection.Assembly.GetAssembly(bal).CreateInstance(bal)

但我不确定它是否会工作 - 我没有注意到名称中的点运算符 - 这是一个内部类或命名空间引用吗?我不认为你可以这样解决内部类。如果您可以在PROTBAL上创建方法,例如CreateNewThing,则可以取消所有这些,只需使用arg调用方法以指示您想要的类型(因为PROTBAL已知)。