Warum ist es nicht erlaubt Shared
MustOverride
/Overridable
Mitglieder haben? Einige argumentieren, dass das Überschreiben mit der Vererbung zusammenhängt, was im Fall von Shared
Mitgliedern keinen Sinn ergibt, da keine Instanziierung beteiligt ist. Hier ist ein Beispiel, wo ich es:Deklarieren Geteilt Mustoverride
Meine Basisklasse DrawingObject
definiert ein Shared
Mitglied TypeName
genannt, die von jedem Kind Klasse implementiert wurde, muss einen eindeutigen Identifikations-String zurück, die für jedes Kind Typen unterschiedlich ist, aber für alle gleich Instanz eines Kindtyps. Nun ist diese verlangt von mir TypeName
Eigenschaft als Shared
und Overridable
definiert haben. Oder gibt es einen besseren Weg?
Basisklasse
Public MustInherit Class DrawingObject
Public MustOverride ReadOnly Property TypeName As String
End Class
Kinder Klasse
Public Class Rectangle
Inherits DrawingObject
Public Overrides ReadOnly Property TypeName As String
Get
Return A_CONST_STRING_DEFINED_IN_THIS_CLASS
End Get
End Property
End Class
Dieser Code funktioniert gut, aber idealerweise sollte TypeName
Shared
gewesen sein, da es eine Const
zurückgibt.
wenn es Ihnen nichts ausmacht können Sie bitte den Code –
@ un-Glück: Posted einige Code. Plz werfen Sie einen Blick. – dotNET
Wenn Sie eine Eigenschaft shared und readonly machen, erzwingt dies immer noch nicht, dass der Vererber den Wert * constant * zurückgibt, so dass das Problem, das Sie beheben möchten, immer noch nicht zu lösen scheint. Wahrscheinlicher ist es, dass Sie Reflektion und ein Attribut verwenden müssen, aber es gibt keine Möglichkeit, den Erben zu zwingen, das Attribut auch anzuwenden. –