Vb.net 与建筑物相对?

Vb.net 与建筑物相对?,vb.net,visual-studio-2010,generics,.net-4.0,casting,Vb.net,Visual Studio 2010,Generics,.net 4.0,Casting,我肯定在某个地方有答案,但我显然在搜索中使用了错误的术语,因此我为这不可避免的是一个重复提前道歉 以函数CType为例。显然,我可以将给定的对象强制转换(或至少尝试)为给定的引用类型。如果试图强制转换到结构,即 CType(myObject, Integer) …将生成编译器错误。我敢肯定,在使用泛型时,最常出现这种情况: Public Function GetResults(Of T)() As T Dim instance As T Return CType(GetData

我肯定在某个地方有答案,但我显然在搜索中使用了错误的术语,因此我为这不可避免的是一个重复提前道歉

以函数CType为例。显然,我可以将给定的对象强制转换(或至少尝试)为给定的引用类型。如果试图强制转换到结构,即

CType(myObject, Integer)
…将生成编译器错误。我敢肯定,在使用泛型时,最常出现这种情况:

Public Function GetResults(Of T)() As T
    Dim instance As T
    Return CType(GetData(instance), T)
End Function

Public Function GetData(ByVal param As myClass) As myClass
    'do stuff
    Return param
End Function

Public Function GetData(byval param As Integer) As Integer
    'do stuff
   Return param
End Function

Public Function GetResults(ByVal param As Object) As Object
    Throw New NotImplementedException
End Function
也许不是最好的例子,但希望能说明我的意思。以下工作将起作用:

Dim result = GetResult(Of myClass)
以下内容将在CType上失败

Dim result = GetResult(Of Integer)
如果可以应用逻辑,我不太喜欢使用异常/Try-Catch,因此尽管我可以尝试捕获CType,但我宁愿找到一种通过不同代码路由它的方法。我知道我可以用泛型

Public Function GetResults(Of T As Structure) As T
什么是相反的?我只需要引用类型,这样CType就不会失败。。。我不能用一个普通的t来重载t As结构,因为它认为它们是相同的签名,所以肯定有一个关键字我遗漏了^^


长问题,可能只需要一个词的答案(对不起)。。。提前谢谢

谢谢@Max,我知道这会很简单。令人恼火的是,我假设在我的示例中,会调用GetResults的正确重载,但实际上它们都会传递到对象版本(用于未实现的类型的全面捕获)。尽管如此,终于知道我要找的是哪个红字还是很有用的,再次感谢
Public Function GetResults(Of T As Class) As T