通用TypeOf运算符?

时间:2011-01-05 02:34:20

标签: vb.net typeof generics generic-type-argument

Dim x = GetType(List(Of )) 'valid statement
Dim list As New List(Of String)

现在我想看看list是否为List(Of T)变量:

Dim isList = TypeOf list Is List(Of )

在最后一行,我收到编译错误:“Type Expected”。

对于泛型,是否有任何廉价的TypeOf运营商替代方案?

3 个答案:

答案 0 :(得分:4)

你必须用反射来做到这一点:

Dim type = list.[GetType]()
Dim isList = type.IsGenericType AndAlso
    type.GetGenericTypeDefinition() = GetType(List(Of ))

答案 1 :(得分:1)

不幸的是,这是不可能的。

您需要致电GetType()并查看IsGenericTypeGetGenericTypeDefinition

答案 2 :(得分:0)

参见Hanselman的博客:http://www.hanselman.com/blog/TheVBEquivalentToCTypeofKeyword.aspx

GetType(T) - 就这么简单:)。