gpt4 book ai didi

vb.net:使用泛型时调用构造函数

转载 作者:行者123 更新时间:2023-12-04 02:59:49 26 4
gpt4 key购买 nike

我不确定这是否可能。

我有许多实现接口(interface) IBar 的不同类,并且具有采用几个值的构造函数。与其创建一堆几乎相同的方法,是否可以有一个通用方法来创建适当的构造函数?

private function GetFoo(Of T)(byval p1, byval p2) as List(Of IBar)
dim list as new List(Of IBar)

dim foo as T

' a loop here for different values of x
foo = new T(x,p1)
list.Add(foo)
' end of loop
return list
end function

我得到:
'New' cannot be used on a type parameter that does not have a 'New' constraint. 

最佳答案

不幸的是,.NET 泛型仅允许您将泛型类型约束为具有无参数构造函数,然后您可以使用 New T() 调用它...您不能指定一组特定的参数。

如果您不介意使您的类型可变,您可以创建一个包含具有相关参数的方法的接口(interface),使您的所有类型都实现该接口(interface),然后约束该类型以实现该方法并具有一个无参数构造函数,但它是不理想。

另一种选择是传入适当的 Func需要xp1并返回一个新的 T每一次。这在 C# 中肯定很容易使用 - 在 VB IIRC 中并不那么容易,但仍然值得考虑。

关于vb.net:使用泛型时调用构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5251745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com