0

我看到很多关于这个话题的讨论。尽管示例和期望的结果总是非常具体和专业。对此的任何方向表示赞赏。

自定义类:

Public Class customClass(Of T, S)
[include properties]
[include methods]
End Class

类的实现:

dim [string] as string = string.empty
dim [type] as type = [string].gettype 

dim instance as customClass(of [type], integer) 

另请注意,我读过 vb.net 不允许您将参数传递给它的构造函数。我拒绝接受您不能将类型传递给类并根据该参数的类型生成对象。唯一的答案是类中的一个函数,它返回一个转换为所需类型的对象列表?感谢您的时间。

这个问题是由学术研究引起的。以上是“我正在尝试做的”谢谢。

4

2 回答 2

2

很难看出你想要做什么,但如果我没看错,你就是在尝试获取一个变量并将其用作通用参数。这在 .NET 中是不可能的——当你声明一个泛型类的变量时,你需要一个编译时类型作为泛型参数,所以它不能是 Type 类型的变量。

这很重要,原因有两个,其中之一是确保满足类型约束。

所以:

Class Foo(Of T)
End Class

Dim x as Type = GetType(String)
Dim y as Foo(Of x)

不起作用 - 你必须这样做:

Dim y as Foo(Of String)

总是有反射和表达式树,但这更像是一种技巧而不是解决方案。

于 2012-10-27T04:38:20.793 回答
0

您不能使用动态类型来调用这种类型化声明(Of t,s),但您可以使用接口或继承“分组”或分隔多个类型,这也可能非常有用。

Class customClass(Of T As iMyInterface, s As iMyInterface)
End Class

Interface iMyInterface
End Interface

Class MyClass1
    Implements iMyInterface
End Class
Class MyClass2
    Implements iMyInterface
End Class

Dim y As New customClass(Of MyClass1, MyClass2)
于 2020-08-25T12:07:44.307 回答