假设您有一个具有 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 成员的类允许您设置新连接或新连接字符串。
最佳答案
或者,您当然可以放弃重载,只需适本地命名属性:
Public WriteOnly Property UriString() As String
Set(ByVal value As String)
m_Uri = new Uri(value)
End Set
End Property
当然你不必做这个 WriteOnly
但它看起来很合适。
关于.net - 相同的属性,不同的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/162879/