Laden...

Eigenschaften von Form überschreiben --> VS2005 Bug

Erstellt von sbertl000 vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.370 Views
sbertl000 Themenstarter:in
822 Beiträge seit 2005
vor 16 Jahren
Eigenschaften von Form überschreiben --> VS2005 Bug

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

6.862 Beiträge seit 2003
vor 16 Jahren

Nein, nen Fehler in deinem Code, du erzeugst ne Endlosschleife und es wird mit ner StackOverflowException abgebrochen.

Baka wa shinanakya naoranai.

Mein XING Profil.

sbertl000 Themenstarter:in
822 Beiträge seit 2005
vor 16 Jahren

Hmm und wie kann ich das beheben

3.511 Beiträge seit 2005
vor 16 Jahren

Du müsstest in diesem Falle base anstatt this nehmen.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

sbertl000 Themenstarter:in
822 Beiträge seit 2005
vor 16 Jahren

Hmm ja das behebt das Problem, allerdings wird die Eigenschaft trotzdem nicht versteckt...

6.862 Beiträge seit 2003
vor 16 Jahren

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.

sbertl000 Themenstarter:in
822 Beiträge seit 2005
vor 16 Jahren

Ok, klingt einleuchtend, d.h. ich sollte die Klasse einfach so lassen?

sbertl

9 Beiträge seit 2006
vor 16 Jahren

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! */

sbertl000 Themenstarter:in
822 Beiträge seit 2005
vor 16 Jahren

Ok, das war mir klar, allerdings ist das natürlich nicht das was ich erreichen wollte 🙂

9 Beiträge seit 2006
vor 16 Jahren

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! */