2013-10-24 4 views
0

Я пытаюсь создать веб-службу для обновления простой таблицы базы данных. У меня есть метод обновления, который принимает параметр объект типа Employee. Я включил ссылку пространства имен, где принадлежит класс Employee. По причине, что я не могу понять, я получаю следующее сообщение об ошибке: несогласованной доступность: параметр типа «EmployeeDBApplication.Employee» является менее доступным, чем метод «EmployeeStoreWS.EmployeeStoreService.update (EmployeeDBApplication.Employee)»Несогласованная доступность - Разработка веб-службы

class Employee 
{ 

    private int id; 

    public int Id 
    { 
     get { return id; } 
     set { id = value; } 
    } 

    private double salary; 

    public double Salary 
    { 
     get { return salary; } 
     set { salary = value; } 
    } 
    private string address; 

    public string Address 
    { 
     get { return address; } 
     set { address = value; } 
    } 
    private string firstname; 

    public string Firstname 
    { 
     get { return firstname; } 
     set { firstname = value; } 
    } 
    private string lastname; 

    public string Lastname 
    { 
     get { return lastname; } 
     set { lastname = value; } 
    } 


    public override string ToString() { 
     string x; 
     x = "Employee ID:" + this.id + "\tName:" + this.firstname + "\t" + this.lastname + "\n\tSalary:" + this.salary + "\t Address:" + this.address; 

     return x; 
    } 

} 

И веб-сервис:

public class EmployeeStoreService : System.Web.Services.WebService 
{ 
    //id int(11) NO PRI 0 
    //firstname varchar(255) YES   
    //lastname varchar(255) YES   
    //address varchar(255) YES   
    //salary double YES   

    [WebMethod] 
    public MySqlConnection getConnection() 
    { 
     return new MySqlConnection("Database=sakila;Data Source=localhost;User Id=root;Password=george 01"); 
    } 

    [WebMethod] 
    public void update(Employee employee) 
    { 
     MySqlConnection connection = null; 
     try 
     { 
      connection = getConnection(); 
      connection.Open(); 

      MySqlCommand myCommand = new MySqlCommand("UPDATE employee SET (?id,?firstname,?lastname,?address,?salary) WHERE employee.id = ?id"); 
      myCommand.Prepare(); 

      myCommand.Parameters.AddWithValue("?id", employee.Id); 
      myCommand.Parameters.AddWithValue("?firstname", employee.Firstname); 
      myCommand.Parameters.AddWithValue("?lastname", employee.Lastname); 
      myCommand.Parameters.AddWithValue("?address", employee.Address); 
      myCommand.Parameters.AddWithValue("?salary", employee.Salary); 

      myCommand.ExecuteNonQuery(); 

      connection.Close(); 

     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
     finally 
     { 
      if (connection != null) 
       connection.Close(); 
     } 
    } 
} 

ответ

1

Вы должны сделать свой класс общедоступным.

public class Employee 

Жалоба на то, что некоторые из ваших членов класса являются общедоступными, а сам класс не является. классы Внутренние по умолчанию

+1

По умолчанию они являются внутренними. – user2674389

+0

Это правильно. благодаря – Rachid

1

Попробуйте изменить эту

class Employee 
{ 

    private int id; 
    //... 

Для этого

public class Employee 
{ 

    private int id; 
    //... 

Если у вас нет особых причин не делать этого, определить Employee в public.

0

Ваш метод обновления является общедоступным, если ваш класс является внутренним. следовательно, сообщение. Когда вы не укажете модификатор доступа, это внутренний.

Смежные вопросы