2012-04-14 6 views
3

Okay, so habe ich Probleme beim Aufruf der Methode GetClassAverage() von der Schnittstelle (das Windows-Formular zeigt die Daten). Ich erhalte die folgende Störung zu „Die Modifikator Öffentlichkeit für diesen Titel nicht gültig ist“ ... dies ist der Code auf meinem IService.cs"Der Modifizierer public ist nicht gültig für diesen Artikel" auf einer Schnittstelle Methode

[ServiceContract] 
public interface IClassRollService 
{ 
    [OperationContract] 
    List<Student> GetStudentList(int semester); 
    [OperationContract]  
    double GetClassAverage(int anything); 
} 

In meiner Service.cs Datei Datei Ich habe

public double GetClassAverage() 
{ 
    double sum = 0.0; 
    double total; 
    foreach (Student S in Students) 
    { 
     sum += S.Average; 
    } 
    return total = sum/Students.Count(); 
} 

Auf meinem Fenster bilden ich eine Gridview durch den Aufruf client.GetStudentList() füllen, aber es für GetClassAverage funktioniert nicht()

Was mache ich falsch oder was bin ich dabei?

[EDIT] Bereits die Öffentlichkeit herausgenommen, aber ich kann immer noch nicht die Methode aus dem Windows Form aufrufen. Gibt es eine andere Möglichkeit, den zurückgegebenen Wert von dieser Methode in das Windows-Formular zu erhalten. Das hat etwas mit den Webdiensten zu tun, soviel weiß ich.

+1

In Bezug auf Ihre edit: Die 'GetClassAverage()' Implementierung * nicht die 'GetClassAverage der Schnittstelle implementieren (int) 'method * weil die Signaturen nicht übereinstimmen. Siehe Steve Wongs Antwort. – phoog

Antwort

15

In einer Schnittstelle sind alle Methoden per Definition öffentlich. Deshalb sagt es dir "öffentlich" ist nicht gültig. Entfernen Sie einfach das Schlüsselwort "public" aus der Methodendefinition Ihrer Schnittstelle und alles wird gut.

+0

Ich habe das public-Schlüsselwort entfernt, aber ich konnte die GetClassAverage() immer noch nicht verwenden, um die Daten an das Label zu binden. @SouthShoreAK – Jess

5

Ihre bearbeitete IService.cs sieht gut aus. Sie benötigen eine Implementierung Unterschrift in Service.cs zu ändern, um Ihre Schnittstelle entsprechen:

public double GetClassAverage() 

zu

public double GetClassAverage(int anything) 
Verwandte Themen