4
votes

Okay, so I am having problems calling the method GetClassAverage() from the interfacce (the windows form displaying the data). I get the following error too "The modifier public is not valid for this item"... this is the code on my IService.cs file

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

In my Service.cs file I have

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

On my windows form I fill a gridview by calling client.GetStudentList() but it does not work for GetClassAverage()

What am I doing wrong or what am I missing?

[EDIT] Already took out the public but I still can't call the method from the Windows Form. Is there any other way I can get the returned value from that method into to the windows form. This has something to do with the web services, that much I know.

2
Regarding your edit: The GetClassAverage() implementation does not implement the interface's GetClassAverage(int) method because the signatures don't match. See Steve Wong's answer.phoog

2 Answers

24
votes

In an interface, all methods are public by definition. That is why it tells you "public" is not valid. Just remove the "public" keyword from your interface's method definition and everything will be fine.

5
votes

Your edited IService.cs looks good. You need to change your implementation signature in Service.cs to match your interface:

public double GetClassAverage()

to

public double GetClassAverage(int anything)