Vb.net将值传递给Type T的构造函数

时间:2012-06-18 14:18:04

标签: vb.net reflection

我有这段代码来获取默认构造函数:

Public Function f(ByVal t As System.Type) As Object
    Return t.GetConstructor(New System.Type() {}).Invoke(New Object() {})
End Function

我需要将值传递给构造函数

Public Function f(ByVal t As System.Type) As Object
    Return t.GetConstructor(New System.Type() {someInteger,someString,etc.etc}).Invoke(New Object() {}) 
End Function

此外,我有3个类型T,所有类都具有不同的参数构造函数。对于我来说,将它设为通用非常重要,因为类型T的类在将来可能会因参数越来越少而增加。

1 个答案:

答案 0 :(得分:4)

是的,这是可能的。

但是,您要将值放在Type()中。您需要指定构造函数的类型,以便它知道您要实际解析的构造函数,然后在Invoke中传递您希望的实际值:

Public Function f(ByVal t As System.Type) As Object
    Return t.GetConstructor(New System.Type() {GetType(Integer),GetType(String)}).Invoke(New Object() {someInteger, someString}) 
End Function