gpt4 book ai didi

extension-methods - 将泛型扩展方法限制为基本类型和字符串

转载 作者:行者123 更新时间:2023-12-04 06:53:11 26 4
gpt4 key购买 nike

我想要一个 XElement/XAttribute 的扩展方法,它允许我应用“ValueOrDefault”逻辑——可能有各种稍微不同的实现:ValueOrNull、ValueOrDefault、NumericValueOrDefault(验证值是否为数字),但我想限制这些方法,以便它们只能与 ValueTypes 或 String 一起使用(即使用任何其他引用类型实际上没有意义。是否可以使用每个方法的一个实现来做到这一点,或者我是否必须在约束所在的地方使用一个“结构”和约束为“字符串”的一个 - 如果我在通用约束中组合结构和字符串,我会收到错误:
“结构”约束和特定的类类型约束不能组合。

当前方法实现的示例如下:

    <Extension()> _
Public Function ValueOrDefault(Of T As {Structure})(ByVal xe As XElement, ByVal defaultValue As T) As T
If xe Is Nothing or xe.Value = "" Then
Return defaultValue
End If

Return CType(Convert.ChangeType(xe.Value, GetType(T)), T)
End Function

最佳答案

不,没有办法在类型约束中做“或”。

在我看来,您确实想要一个具有值类型约束的泛型重载,以及一个非泛型但具有字符串参数的重载。无论如何,您实际上无法指定密封类的类型约束。

关于extension-methods - 将泛型扩展方法限制为基本类型和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2831177/

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