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