Я хочу иметь метод расширения для XElement/XAttribute, который позволяет мне применять логику «ValueOrDefault» - возможно, с различными немного разными реализациями: ValueOrNull, ValueOrDefault, NumericValueOrDefault (который проверяет, значение является числовым), но я хочу ограничить эти методы, чтобы они могли работать только с ValueTypes или String (т. е. на самом деле не имеет смысла использовать какие-либо другие ссылочные типы. Возможно ли это сделать с одной реализацией каждого метода , или мне нужно будет иметь тот, где ограничение является «Структура», и где ограничение является «String» - если я объединяю Structure и 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