无法隐式转换类型';.公司[]';到';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;
}
第一个异常:
集合在服务元数据中公开为数组。WCF服务方法的泛型列表将作为数组返回(默认情况下(,请检查此服务的客户端代理类以了解该方法的返回类型。
所以我们需要做一些额外的步骤来在客户端上获取List。请参考此帖子,并将其更改为服务参考。
https://stackoverflow.com/a/15563298/5080526
第二期:
如果客户端只想迭代、读取和获取数据,那么让服务通过接口返回列表是一种很好的做法;但我们不能只在服务端代码中将返回类型从List<Company>
更改为IList<Company>
,因为我们不能在客户端向泛型List添加数组元素。因此,我也赞同二云的上述解决方案。