Anzeige

Hilfe bei Interface

FloDra

Grünschnabel
#1
Hi Leute,

ich wollte in meinem Programm jetzt das Entwurfsmuster einer Brücke benutzen und hab es auch soweit das es gehen müsste.
Das alles dient dazu eine Messung zu machen und live ein Diagram anzuzeigen mit aktuellen Messwerten.

Jetzt bekomme ich beim Interface jedoch eine Fehlermeldung:

"ConsoleProgramm.IBeobachter.benachrichtigen(ConsoleProgramm.Messpunkte)": Schnittstellenmember können keine Definition haben.

Wo is da mein Fehler? Liegts am Interface oder an der weiteren Benutzung?

Interface:
Code:
namespace ConsoleProgramm
{
    public interface IBeobachter
    {
        void benachrichtigen(Messpunkte m)
        {
            
        }
    }
}
Klasse Messung:
Code:
...

public abstract class  Messung
    {
        Messpunkt mp = new Messpunkt();
        Messpunkte messpunkte = new Messpunkte();
        Form1 Dia;

        private List<IBeobachter> m_liste;      //member Liste

        public double frequenz, pegel;
        private bool Messungläuft;
        
        //Konst.
        public Messung() 
        {
           this.m_liste = new List<IBeobachter>();
           Console.WriteLine("messung konst");
        }

        public virtual void anmelden(IBeobachter b)                     //muss nicht zwingent virtual sein
        {
            this.m_liste.Add(b);
        }
        public virtual void kündigen(IBeobachter b)
        {
            this.m_liste.Remove(b);
        }
        public void aktualisieren(Messpunkte messpunkte)
        {
            foreach (IBeobachter hörer in this.m_liste)
                hörer.benachrichtigen(messpunkte);
        }

...
Klasse Messen (da messung abstract):
Code:
namespace ConsoleProgramm
{
    sealed class  Messen : Messung    //eigentliche klasse da Messung abstract 
    {
        public Messen() : base()
        { 
            
        }
    }
}
Klasse Diagramm:
Code:
 public partial class Form1 : Form , IBeobachter
    {
        Messung mess;

        public bool StatusMessung;

        public Form1()
        {
            InitializeComponent();
            Console.WriteLine("dia konst");
        }

        void IBeobachter.benachrichtigen(Messpunkte messwerte) 
        {
            PointPairList list = new PointPairList();
            list = messwerte.GibPointList();
            CreateGraph(list, zg1);
        }

...
 

Spyke

Capoeirista
Premium-User
#2
bei schnittstellen darfst du nur prototypen angeben, oder so gesagt nur die kopfbeschreibungen.
Code:
namespace ConsoleProgramm
{
    public interface IBeobachter
    {
        void benachrichtigen(Messpunkte m);

        string Eigenschaft { get; set; }
    }
}
Also im prinzip nur Rückgabewert, Name der Methode und die Paramter.

Als weiteres Beispiel hab ich gleich mal noch eine Eigenschaft angehängt, bei der du nur angibst ob diese getter und/oder setter hat.
 

FloDra

Grünschnabel
#3
Danke Spyke,

hab die Klammern erntfernt und die Methode als Prototyp angegeben und es hat geklappt. :)
Jaja manchmal sind es die Kleinigkeiten, die einen über 1h aufhalten. :rolleyes:
 
Anzeige

Neue Beiträge

Anzeige