0

我正在尝试将列表的新实例实例化为从不同 .dll 类中的方法接收的对象。当我这样做时,我得到一个类型转换错误:

无法将 System.Collections.Generic.List<HelpDeskBusinessDataObject.Employee> 类型隐式转换为 System.Collections.Generic.List<HelpDeskBusinessUserObject.Employee>

这是我实例化它的方式:

public List<EmployeeBusinessUser> GetAll()
{
    EmployeeBusinessData empData = new EmployeeBusinessData();

    List<Employee> employees = new List<Employee>();
    List<EmployeeBusinessUser> retEmployees = new List<EmployeeBusinessUser>();

    try
    {
        //Here is where I am trying to get the list assigned to what is 
        //returned from the method call
        employees = empData.GetAll();
    }
    catch (Exception ex)
    {
        ErrorRoutine(ex, "EmployeeUserData", "GetAll");
    }

    return retEmployees;
}

谢谢您的帮助。

编辑:GetAll() 方法:

 public List<Employee> GetAll()
    {
        HelpDeskDBEntities dbContext = new HelpDeskDBEntities();
        List<Employee> employees = new List<Employee>();

        try
        {
            employees = dbContext.Employees.ToList();
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
        return employees;
    }
4

4 回答 4

1

您不能简单地在 2 个不同的命名空间中分配两个类。您需要有一种转换或翻译方法来映射这两者。

错误用命名空间清楚地说明了它。HelpDeskBusinessDataObject 与 HelpDeskBusinessUserObject

无法隐式转换类型 System.Collections.Generic.List<HelpDeskBusinessDataObject.Employee> to System.Collections.Generic.List<HelpDeskBusinessUserObject.Employee>

于 2013-10-14T00:04:52.127 回答
0

EmpData 是 EmployeeBusinessData 的一个实例。employees 是一个员工列表。除非方法 GetAll() 返回,否则您不能简单地获取所有内容

List<Employee>.  

只需从 GetAll() 检查您的返回类型并确保它返回一个员工列表。

于 2013-10-13T23:59:51.120 回答
0

此错误仅意味着您无法返回 HelpDeskBusinessDataObject 类型的列表,其中需要 HelpDeskBusinessUserObject。请发布对 GetAll() 方法的调用。

于 2013-10-14T00:01:20.750 回答
0

您可以使用 Linq 特别是Select转换 HelpDeskBusinessDataObject.EmployeeHelpDeskBusinessUserObject.Employee.

例如像这样:

empData.GetAll().Select(e => createBusinessUserEmployee(e)).ToList();
于 2021-07-02T09:08:03.743 回答