Verwenden von Schnittstellen für abstrakte Klassen in C #

Lerne ich C# aus C++ und haben in eine Wand laufen.

Ich habe eine abstrakte Klasse AbstractWidget, eine Schnittstelle IDoesCoolThings, und eine Klasse die sich von AbstractWidget genannt RealWidget:

public interface IDoesCoolThings
{
    void DoCool();
}

public abstract class AbstractWidget : IDoesCoolThings
{
    void IDoesCoolThings.DoCool()
    {
        Console.Write("I did something cool.");
    }
}

public class RealWidget : AbstractWidget
{

}

Wenn ich die Instanzierung eines RealWidget-Objekt, und rufen DoCool() auf, der compiler gibt mir die Fehlermeldung

'RealWidget' nicht enthalten
definition für "DoCool'

Kann ich cast RealWidget Objekt zu einem IDoesCoolThings und dann der Aufruf funktioniert, aber das scheint unnötig und ich auch verlieren Polymorphismus (AbstractWidget.DoCool() wird immer aufgerufen, auch wenn ich definieren RealWidget.DoCool()).

Ich mir vorstellen, dass die Lösung einfach ist, aber ich habe versucht eine Vielzahl von Dingen und für das Leben von mir kann nicht herausfinden this one out.

Kommentar zu dem Problem
Um Polymorphismus in widgets' DoCool(), müssten Sie erklären, die AbstractWidget ist eine virtuelle. Kommentarautor: Anton Tykhyy
Erg. Ich hatte irgendwo gelesen, dass virtuelle impliziert wurde für die interface-Methoden. Kommentarautor: JubJub

InformationsquelleAutor der Frage JubJub | 2009-03-26

Schreibe einen Kommentar