.net 有没有办法为泛型类型添加类似params选项的内容?

.net 有没有办法为泛型类型添加类似params选项的内容?,.net,parameters,types,generics,.net,Parameters,Types,Generics,我有一个类似于下面的函数。我想修改它,这样我就可以传递多个类型来进行筛选,而不是只传递一个。我认为类型参数没有params/paramarray选项,是吗 Public Shared Function Filter(Of T)() Dim results As New List(Of T) For Each item In GlobalCollection.All() If GetType(T).IsAssignableFrom(item.GetType()) T

我有一个类似于下面的函数。我想修改它,这样我就可以传递多个类型来进行筛选,而不是只传递一个。我认为类型参数没有params/paramarray选项,是吗

Public Shared Function Filter(Of T)()
    Dim results As New List(Of T)
    For Each item In GlobalCollection.All()
        If GetType(T).IsAssignableFrom(item.GetType()) Then
            results.Add(instance)
        End If
    Next
    Return results.ToArray()
End Function
我希望能够这样称呼它:

Filter(Of Car)
也像:

Filter(Of Car, Truck, Boat)

不,类型参数的数量在编译时是固定的(对于泛型类型和方法)。但是,您可以通过类型参数的数量来重载-因此您可以使用不同数量的类型参数来生成N个不同版本的方法


(这有点像
Action
Action(Of T)
Action(Of T1,T2)
等等)

不,类型参数的数量在编译时是固定的(对于泛型类型和方法)。但是,您可以通过类型参数的数量来重载-因此您可以使用不同数量的类型参数来生成N个不同版本的方法


(这有点像
动作
动作(T)
动作(T1,T2)
等等)

你可以让函数看起来更像这样:

Public Shared Function Filter()(ByVal FilterTypes As IEnumerable(Of Type)) As IList(Of Object)
但是你必须返回一组对象


更好的选择是为您的类型定义某种类型的继承结构(可以是接口)。因此,您的“Car”、“Truck”和“Boat”类型都将实现或继承基本的“Vehicle”类型。

您可以使函数看起来更像这样:

Public Shared Function Filter()(ByVal FilterTypes As IEnumerable(Of Type)) As IList(Of Object)
但是你必须返回一组对象


更好的选择是为您的类型定义某种类型的继承结构(可以是接口)。因此,您的“Car”、“Truck”和“Boat”类型都将实现或继承基本“Vehicle”类型。

为什么要将结果转换为数组?你应该为你的函数指定返回类型。是的,那是个输入错误。我实际上返回了一个Ienumerable(Of T)为什么要将结果转换为数组?你应该为你的函数指定返回类型。是的,那是个输入错误。实际上,我返回了一个Ienumerable(Of T),我希望它可以传入任意数量的类型。我担心这是不受支持的。我无法立即看到您的方法将如何扩展到多个类型…我希望它可以传入任意数量的类型。我担心这不受支持。我无法立即看到您的方法将如何扩展到多个类型。。。