문제

URI 속성이있는 수업이 있다고 가정 해 봅시다. 해당 속성을 문자열 값과 URI를 모두 수락 할 수있는 방법이 있습니까? 어떻게 구축 하시겠습니까?

다음 중 하나와 같은 작업을 수행 할 수 있지만 지원되지 않습니다 (VB를 사용하여 두 번째 선언에 대한 세트 선언에 유형을 지정할 수 있으므로) : :

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 그러나 그것은 적절한 것 같습니다.

다른 팁

나는 당신이 동반 한 것을 제공해야한다고 생각합니다

Public Sub SetLink(ByVal value as String)
    _link = new Uri(value)
End Sub

더 좋은 것은 없습니다, Afaik.

URI 속성이있는 수업이 있다고 가정 해 봅시다. 해당 속성을 문자열 값과 URI를 모두 수락 할 수있는 방법이 있습니까?

아니요 이것은 리턴 유형에만 다른 두 개의 getter가 있다는 것을 의미하며 .NET에서는 허용되지 않습니다.

나는 그것을 사용할 것이다 Uri 메소드는 독점적으로 그리고 아마도 URI 문자열이 주어지면 속성. 그러나 전환 이후 String 에게 URI 간단합니다.조차도 불필요 할 수 있습니다.

그런 속성은 하나를 가질 수는 없지만 Windows 형태의 높이/너비/크기와 마찬가지로 동일한 기본 필드를 조작 한 두 가지 속성을 만들 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top