.net – 相同属性,不同类型

假设你有一个带有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(字符串值)方法更好的东西,我仍然在.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 – 相同属性,不同类型 - 代码日志