Допустим, у вас есть класс со свойством Uri. Есть ли способ заставить это свойство принимать как строковое значение, так и Uri? Как бы вы его построили?
Я хотел бы иметь возможность сделать что-то подобное одному из следующих, но ни одно из них не поддерживается (с использованием VB, поскольку оно позволяет вам указать тип в объявлении Set для второго):
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, который позволяет вам установить, например, новое соединение или новую строку соединения.