Frage

Angenommen, Sie haben eine Klasse mit einer Uri-Eigenschaft. Gibt es eine Möglichkeit, dass die Immobilie zu erhalten akzeptieren sowohl einen String-Wert und einen Uri? Wie würden Sie es bauen?

Ich möchte in der Lage sein, so etwas wie eine der folgenden Aktionen zu tun, aber weder unterstützt (VB verwenden, da es Ihnen Typen in der Set-Deklaration für die 2. eine angeben kann):

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

Da diese werden wahrscheinlich nicht in absehbarer Zeit unterstützt werden, wie sonst würden Sie damit umgehen? Ich bin auf der Suche nach etwas ein wenig schöner als nur ein zusätzlichen .SetLink(string value) Verfahren bereitgestellt wird, und ich bin immer noch auf .NET2.0 (obwohl, wenn neuere Versionen ein nettes Feature für diese haben, ich möchte davon hören).

Ich kann von anderen Szenarien denkt, wo Sie diese Art von Überlastung schaffen möchten: a. Klasse mit einem SqlConnection Mitglied, das Sie entweder eine neue Verbindung oder eine neue Verbindungszeichenfolge, zum Beispiel festlegen kann

War es hilfreich?

Lösung

Alternativ können Sie natürlich verzichten Überlastung und nennen nur die Eigenschaften entsprechend:

Public WriteOnly Property UriString() As String
    Set(ByVal value As String)
        m_Uri = new Uri(value)
    End Set
End Property

Natürlich müssen Sie nicht dieses WriteOnly machen, aber es scheint angemessen.

Andere Tipps

Ich glaube, Sie nur ein begleitendes

zur Verfügung stellen müssen
Public Sub SetLink(ByVal value as String)
    _link = new Uri(value)
End Sub

Nichts ist schöner verfügbar, AFAIK.

  

Angenommen, Sie haben eine Klasse mit einer Uri-Eigenschaft. Gibt es eine Möglichkeit, dass die Immobilie zu erhalten zu akzeptieren sowohl einen String-Wert und ein Uri?

Nein, weil dies bedeuten würde, zwei Getter aufweisen, die nur in ihrem Rückgabetyp variieren, und dies wird nicht in .NET erlaubt.

würde ich die Uri Methode ausschließlich verwenden und vielleicht eine convenienec Methode schaffen die URI Eigenschaft zu setzen, eine Zeichenfolge angegeben. Da jedoch die Umwandlung von String zu URI einfach ist, auch dies könnte überflüssig sein.

Sie können nicht eine Eigenschaft wie die haben, aber man konnte zwei Eigenschaften erzeugen, die beide das gleiche zugrunde liegende Feld manipulieren -. Wie Höhe / Breite / Größe in Windows Forms

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top