C# Methoden-Implemenation in vererbten Klassen erzwingen

Krik

Fleet Admiral Pro
Registriert
Juni 2005
Beiträge
17.298
Hallo zusammen,

ich habe ein Control, bei dem ich will, dass alle davon abgeleiteten Klassen Reaktionen auf bestimmte Events implementieren müssen.

Normalerweise macht man das ja indem man die Oberklasse als abstrakte Klasse definiert. Bei mir will er aber unbedingt, dass ich die Klasse als partial deklariere.
Code:
public partial class MyControl : UserControl
Fehlermeldung wenn ich partial mit abstract ersetze:
Ein partial-Modifizierer in der Deklaration des Typs "MyControl" fehlt. Es ist eine andere partielle Deklaration dieses Typs vorhanden.
Ich habe keinen Plan, wie ich das anstellen soll. Ebenso mit der erzwungenen Eventbehandlung. Wie kann ich die eigentlich am besten erzwingen?

Was ich am liebsten hätte, wäre was a la
Code:
abstract class MyControl : UserControl
{
    abstract void OnClick();
...
von der ich dann verschiedene andere Klassen erben lasse.

Gruß, Laurin
 
Betreffend partial: Ich schätze, du hast eine MyControl.Designer.cs Datei vom GUI Designer. Die Klasse ist auf mehrere Dateien aufgeteilt -> partial.
 
Hallo,

dich hindert niemand einfach eine partial abstract Klasse zu definieren. Der folgende Code kompiliert bei mir:

Code:
public abstract partial class MyControl : UserControl
{
  public abstract void OnClick();
}

public partial class MyControl2 : MyControl
{
  public override void OnClick() { }
}

Laut der Fehlermeldung ist ein Teil deiner Klasse bereits wo anders definiert. Schau mal in deinen Codedateien nach wo noch partielle Deklarationen von MyControl liegen.

Gruß
Michael
 
Zuletzt bearbeitet:
Ihr hattet Recht. Ich habe vor diesem Punkt mit einigen UserControls herumgespielt und dann gelöscht. Im /obj/Debug/-Verzeichnis blieben aber Reste übrig. Nachdem ich sie gelöscht habe, geht es.
Ich bin eigentlich immer davon ausgegangen, dass VS automatisch solche Dinge macht, scheint aber nicht der Fall zu sein.
 
Zurück
Oben