Zum Inhalt springen

[VB.Net]Interface Property umbenennen


Empfohlene Beiträge

Geschrieben

Grüße,

mich beschäftigt seit einiger Zeit das Problem, ob es möglich ist eine Property eines Interfaces mit Interfacevererbung umzubenennen.

Bei einfacher expliziter Interfaceimplementierung ist dies ja einfach realisierbar:


Interface IFooBar

    Property FooBar() As Double

End Interface


Class FooBar : Implements IFooBar


    Public Property FooBar() As Double

        Get

            '...

        End Get

        Set(ByVal value As Double)

            '...

        End Set

    End Property


    Public Property IFooBarsFooBar() As Double Implements IFooBar.FooBar

        Get

            '...

        End Get

        Set(ByVal value As Double)

            '...

        End Set

    End Property

End Class

Da dacht ich mir, wenn das so geht, dann kann ich auch noch ein Interface dazwischenschalten, welches die Eigenschaft des Interfaces einfach umbenennt:

Interface A

    Property foo() As Double

End Interface


Interface B : Inherits A

    Property bar() As Double Implements A.foo

End Interface


Class C : Implements B


    Public Property bar() As Double Implements B.bar

        Get

            '...

        End Get

        Set(ByVal value As Double)

            '...

        End Set

    End Property

End Class

Funktioniert so aber nicht, weil:

Class 'C' must implement 'Property foo() As Double' for interface 'A'. Implementing property must have matching 'ReadOnly' or 'WriteOnly' specifiers.

Warum ist das so?

Ich hab doch in B geschrieben, dass die Property bar gleichzeitig die Property foo repräsentiert.

Gibt es da irgend eine Möglichkeit oder ist das nicht machbar?

Geschrieben

Wenn ich das noch richtig im Kopf habe, ist die Vererbung eine Menge:

Deine Klasse B ist eine Obermenge von C und A Obermenge von B, das impliziert dass A ebenfalls Obermenge von C ist und somit muss in C alles aus A implementiert sein und zusätzlich das aus B

HTH Phil

Geschrieben

Ja, aber wenn ich sage, dass B.bar gleichzeitig A.foo implementiert müsste das doch heißen, dass A.foo implementiert ist, wenn B.bar implementiert wurde. :confused:

Komische Sprache...

Geschrieben

B erbt von A - das heißt, B besitzt foo von A, auch wenn du in der Schnittstelle A.foo durch bar implementierst.

Einfach die Vererbung rauslassen

Die Vererbung von A kann ich nicht rauslassen, da einige Funktionen einen A-Typ als Parameter brauchen.

Das Problem entsteht nur wegen der besseren Lesbarkeit, aber wenns nicht geht, ist das auch ok...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...