0

単純なデータベース テーブルを更新するための Web サービスを作成しようとしています。Employee 型のオブジェクトをパラメーターとして受け取る update メソッドがあります。Employee クラスが属する名前空間の参照を含めました。理解できない理由で、次のエラーが表示されます: Inconsistent accessibility: parameter type 'EmployeeDBApplication.Employee' is lessaccessible than method '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();
        }
    }
}
4

3 に答える 3

2

クラスを公開する必要があります。

public class Employee

クラス自体が公開されていないのに、クラスメンバーの一部が公開されていると不平を言っています。クラスはデフォルトで Internal です

于 2013-10-24T18:06:33.450 に答える
1

これを変更してみてください

class Employee
{

    private int id;
    //...

これに

public class Employee
{

    private int id;
    //...

特別な理由がない限り、 として定義Employeepublicます。

于 2013-10-24T18:05:48.080 に答える