【发布时间】:2008-10-02 15:09:40
【问题描述】:
假设您有一个具有 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 成员的类允许您设置新连接或新连接字符串。
【问题讨论】:
-
稍后再谈,选项 1 对我来说甚至不再有意义,因为编译器可能并不总是能够推断出正确的 Get to use。
标签: .net .net-2.0 properties overloading