体验"不一致的可访问性:返回类型不如方法"

时间:2014-04-08 18:13:38

标签: c#

使用Visual Studio 2010使用C#进行编码时遇到此错误。

public List<Employee> employee_getData()
{
    List<Employee> employees;
    employees = new List<Employee>();
    connection = new SqlConnection(connectionStr);
    cmd = new SqlCommand("sp_employeeList", connection);

    try
    {
        connection.Open();
        dr = new SqlDataReader();
        dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            Employee e = new Employee(dr["e_ID"].ToString(), dr["e_Name"].ToString(), DateTime.Parse(dr["e_dayofBirth"].ToString()), dr["e_Regency"].ToString()
            , float.Parse(dr["e_salaryRate"].ToString()), dr["e_workingBranch"].ToString(), dr["e_workingPosition"].ToString(),
            dr["e_username"].ToString(), dr["e_passcode"].ToString());
            employees.Add(e);
        }
    }
    catch (Exception e)
    {
    }
    finally
    {
        connection.Close();
    }

    return employees;
}

它会抛出一个包含以下细节的异常:

  

可访问性不一致:返回类型   'System.Collections.Generic.List'更少   比方法更容易   'ResortLib.DataAccessObject.DAO_Employee.employee_getData()'

2 个答案:

答案 0 :(得分:3)

您的方法标记为public,但您的班级Employee访问权限较少。您可能没有使用类定义指定任何访问说明符,因此将其设为internal。您可以通过在类中指定public来修复该错误:

public class Employee 
{
//your class clode

答案 1 :(得分:1)

看看这个样本:

// if you not specify explictly the access modifier
// it is internal for class/struct inside namespace
// or private for inner types
/*internal*/ class A
{
}

public class B
{
    public List<A> GetA() // <- this line give error Inconsistent accessibility...
    {
        return null;
    }
}

因此,要解决您的问题,您可以将课程Employee设为公开或以其他方式使您的方法employee_getData内部。正如在c#中注意命名约定,你可以在网上找到很多信息。