Quindi perché non è consentito avere membri Shared
MustOverride
/Overridable
? Alcuni sostengono che l'override sia correlata all'ereditarietà, il che non ha senso nel caso di membri Shared
perché non è prevista alcuna istanziazione. Ecco un esempio in cui ne ho bisogno:Dichiarazione di MustOverride condivisa
La mia classe di base DrawingObject
definisce un membro Shared
nome TypeName
che deve essere implementata da ogni classe figlia per restituire una stringa di identificazione univoco, che è diverso per ogni tipo di bambino, ma uguale per tutti istanza di un tipo di bambino. Ora questo mi richiede di avere la proprietà TypeName
definita come Shared
e Overridable
. O c'è un modo migliore per farlo?
Classe base
Public MustInherit Class DrawingObject
Public MustOverride ReadOnly Property TypeName As String
End Class
classe Bambino
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
Questo codice funziona bene, ma idealmente TypeName
avrebbe dovuto essere Shared
dal momento che restituisce un Const
.
se non ti spiace potresti postare il codice –
@ non-fortunato: ha pubblicato un codice. Plz dai un'occhiata. – dotNET
Rendere una proprietà condivisa e in sola lettura ancora non impone che l'ereditario restituisca un valore * costante *, quindi non sembra ancora risolvere il problema che si desidera. Più probabilmente, sembra che tu abbia bisogno di usare reflection e un attributo, ma non c'è modo di forzare l'erediter ad applicare l'attributo. –