Предположим, у вас есть класс с собственностью Uri. Есть ли способ получить это свойство, чтобы принять как строковое значение, так и Uri? Как бы вы его построили?То же свойство, разные типы
Я не хотел бы быть в состоянии сделать что-то вроде одного из следующих, но и не поддерживаются (с использованием VB, так как он позволяет определить тип в декларации Набор для 2-го один):
Class MyClass
Private _link As Uri
'Option 1: overloaded property
Public Property Link1 As Uri
Get
return _link
End Get
Set(ByVal value As Uri)
_link = value
End Set
End Property
Public Property link1 As String
Get
return _link.ToString()
End Get
Set(Byval value As String)
_link = new Uri(value)
End Set
End Property
' Option 2: Overloaded setter
Public Property link2 As Uri
Get
return _link
End Get
Set(Byval value As Uri)
_link = value
End Set
Set(Byval value As String)
_link = new Uri(value)
End Set
End Class
Учитывая, что они, вероятно, не будут поддерживаться в ближайшее время, как еще вы справитесь с этим? Я ищу что-то немного приятнее, чем просто предоставление дополнительного метода .SetLink(string value)
, и я все еще на .Net2.0 (хотя, если более поздние версии имеют приятную возможность для этого, я хотел бы услышать об этом).
Я могу думать о других сценариях, где вы можете захотеть предоставить такую перегрузку: класс с членом SqlConnection, который позволяет вам установить либо новое соединение, либо новую строку соединения, например.
Возвращаясь к этому намного позже, вариант 1 мне даже не имеет смысла, потому что компилятор не всегда может сделать вывод о том, что нужно использовать. – 2016-12-14 02:28:05