2
我想要一个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