无法隐式转换类型';.公司[]';到';System.Collections.Generic.List

本文关键字:System Collections List Generic 公司 类型 转换 | 更新日期: 2023-09-27 18:01:08

祝你一切顺利,

从服务获取列表时,我得到了主题异常。我需要做的是调用该服务,该服务将返回公司列表。

我在客户端应用程序上有相同的Entity类。现在,当我试图将服务响应保存到该列表中时,我得到了主题异常。

代码段

 private List<Company> companyList = new List<Company>();
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            SignupServiceRef.SignUPClient signupServ = new SignupServiceRef.SignUPClient();

            companyList = signupServ.processCompanyCategories(); // Here I'm getting the exception
            foreach(Company companyCategory in companyList)
            {
                control_coyCategory.Items.Add(companyList.); // unable to access the variables
            }
            control_userName.Attributes.Add("onBlur", "javascript:checkUserNameExists()");
        }
    }

机密性

 public class Company
{
    private int _companyId;
    private string _companyName;
    private string _companyAddress;
    private int _companyCategoryId;

    public int companyId
    {
        get { return _companyId; }
        set { _companyId = value; }
    }
    public string companyName
    {
        get { return _companyName; }
        set { _companyName = value; }
    }
    public string companyAddress
    {
        get { return _companyAddress; }
        set { _companyAddress = value; }
    }
    public int companyCategoryId
    {
        get { return _companyCategoryId; }
        set { _companyCategoryId = value; }
    }
}

服务方法

  public List<Company> processCompanyCategories() {
        return coyCategory.getCompanyCategoryList();
    }
  public List<Company> getCompanyCategoryList() {
        return companyManagementDAL.getCompaniesList();
    }
    public List<Company> getCompaniesList()
    {
        List<Company> companyList = companyList = new List<Company>(); ;
        using (SqlConnection connection = new SqlConnection(DBConnection.DBConnectionString))
        {
            SqlCommand command = new SqlCommand(StoredProcedures.SPROC_COMPANY_ALLCOMPANYNAMES, connection);
            command.CommandType = CommandType.StoredProcedure;
            connection.Open();
            SqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                Company company = new Company();
                company.companyId = (int)reader[0];
                company.companyName = (string)reader[1];
                company.companyAddress = (string)reader[2];
                company.companyCategoryId = (int)reader[3];
                companyList.Add(company);
            }

        }
        return companyList;
    }

无法隐式转换类型';.公司[]';到';System.Collections.Generic.List

第一个异常:

集合在服务元数据中公开为数组。WCF服务方法的泛型列表将作为数组返回(默认情况下(,请检查此服务的客户端代理类以了解该方法的返回类型。

所以我们需要做一些额外的步骤来在客户端上获取List。请参考此帖子,并将其更改为服务参考。

https://stackoverflow.com/a/15563298/5080526

第二期:

如果客户端只想迭代、读取和获取数据,那么让服务通过接口返回列表是一种很好的做法;但我们不能只在服务端代码中将返回类型从List<Company>更改为IList<Company>,因为我们不能在客户端向泛型List添加数组元素。因此,我也赞同二云的上述解决方案。

相关文章: