Ich will eine Form Basisklasse für ein einheitliches Design erstellen, darum hab ich eine Klasse von Form abgeitet. Ich will auch, dass man FormBorderStyle nicht ändern kann, somit hab ich folgendes gemacht:
private new FormBorderStyle FormBorderStyle
{
get{return this.FormBorderStyle;}
set{this.FormBorderStyle = value;}
}
Leite ich jetzt eine Klasse von dieser ab, stürzt VS2005 ab. Nehm ich die Zeilen oben raus funktioniert es.
Ist das ein VS2005SP1 Bug?
sbertl
Nein, nen Fehler in deinem Code, du erzeugst ne Endlosschleife und es wird mit ner StackOverflowException abgebrochen.
Baka wa shinanakya naoranai.
Mein XING Profil.
Du müsstest in diesem Falle base anstatt this nehmen.
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
Hmm ja das behebt das Problem, allerdings wird die Eigenschaft trotzdem nicht versteckt...
Geht auch nicht, das ist eines der Grundprinzipien der objektorientierten Programmierung. Man kann Klassen immer nur erweitern, nie einschränken.
Zum new Schlüsselwort gabs auch schon einige Diskussionen hier - meistens mit der Meinung es ist "böse" 🙂
Baka wa shinanakya naoranai.
Mein XING Profil.
Ok, klingt einleuchtend, d.h. ich sollte die Klasse einfach so lassen?
sbertl
Du kannst höchstens die Eigenschaft aus IntelliSense und aus dem Attributfenster verbannen:
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
private new FormBorderStyle FormBorderStyle { ...
mike42
2b||!2b /* das ist hier die Frage! */
Ok, das war mir klar, allerdings ist das natürlich nicht das was ich erreichen wollte 🙂
Stimmt schon. Macht auch keinen Sinn, wenn Du die Klasse doch so lassen willst wie sie war 🙂
mike42
2b||!2b /* das ist hier die Frage! */