Laden...

abstract Forms im Designer

Erstellt von Jelly vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.300 Views
J
Jelly Themenstarter:in
1.114 Beiträge seit 2007
vor 16 Jahren
abstract Forms im Designer

Ich hab ein VS Problem. Und zwar möchte ich eine BaseForm von Form erben, mit einigen Zusatzfunktionalitäten. Soweit ja kein Problem, nur werden einige Methoden erst später von meinen abgeleiteten Forms aus Baseform heraus implementiert. Es macht keinen Sinn, die funktionalität bereits in BaseForm zu implementieren, deshalb dachte ich daran, diese Methoden dort als abstract zu definieren. Nur macht mir dann der VS Designer einen Strich durch die Rechnung, weil er immer meckert, er könne keine Instanz von Baseform erstellen X(

Was gibt es denn nun noch von Möglichkeiten. Ich dachte an Interfaces, aber weil ich ja aus der Baseform meine Methoden aufrufe, müsste ich das Interface ja auch wieder dort implementieren, was ja gerade keinen Sinn macht.

Zur Zeit habe ich in der Baseform einfach meine Methoden als virtuell deklariert, mit leerem Inhalt. Das funktioniert so, jedoch geht der Überblick verloren, da man in den geerberten Klassen nicht dazu gezwungen wird, die Methoden zu überschreiben.

Gibts denn sonst noch Möglichkeiten?

2.187 Beiträge seit 2005
vor 16 Jahren

Soweit mir bekannt, kann man da nichts machen.
Do könntest wenigstens noch eine NotImplementedException werfen, aber mehr fällt mir auch nicht ein.

Sry

343 Beiträge seit 2007
vor 16 Jahren

Ich dachte an Interfaces, aber weil ich ja aus der Baseform meine Methoden aufrufe, müsste ich das Interface ja auch wieder dort implementieren, was ja gerade keinen Sinn macht.

Nicht ganz. Du machst ein Interface welches du dann, wie du schon sagtest natürlich nicht in Baseform implementierst, sondern in der davon abgeleiteten Form.

Aber ich denke das beste ist wirklich einfach eine "leere" Funktion zu erstellen und evt. so wie JuyJuka schon erwähnte eine NotImplementedException zu werfen. Ist vielleicht nicht die sauberste Lösung, aber du würdest erreichen was du beabsichtigst.

Mfg Preli

Ach ja: dritte Möglichkeit:
Nachdem du alle Forms und Oberfläche mit dem Designer erstellt hast, kannst du die Funktionen ja abstract machen - dann brauchst du den Designer ja nicht.
Oder du arbeitest ganz ohne Designer 😁

[- www.saftware.net -](http://www.saftware.net/)
J
Jelly Themenstarter:in
1.114 Beiträge seit 2007
vor 16 Jahren

Nicht ganz. Du machst ein Interface welches du dann, wie du schon sagtest natürlich nicht in Baseform implementierst, sondern in der davon abgeleiteten Form.

Dann kann ich aber die Methoden nicht aus der Baseform heraus aufrufen.

Aber ich denke das beste ist wirklich einfach eine "leere" Funktion zu erstellen und evt. so wie JuyJuka schon erwähnte eine NotImplementedException zu werfen. Ist vielleicht nicht die sauberste Lösung, aber du würdest erreichen was du beabsichtigst.

Sieht also ganz danach aus, schade. Wobei dann bei der Erbform darauf aufgepasst werden muss, dass beim Überschreiben der virtuellen Methoden auf den base Aufruf verzichtet wird. 😁

Ach ja: dritte Möglichkeit:
Nachdem du alle Forms und Oberfläche mit dem Designer erstellt hast, kannst du die Funktionen ja abstract machen - dann brauchst du den Designer ja nicht.
Oder du arbeitest ganz ohne Designer 😄

Igitt 8)

J
Jelly Themenstarter:in
1.114 Beiträge seit 2007
vor 16 Jahren

Da mir diesbezüglich eine Artikel bei Codeproject ins Auge sprang, will ich den natürlich hier nicht vorenthalten.

Hier steht wie's geht:
Inheriting a Form from an abstract class (and make it work in the Designer)