如何使用AutoMapper将IList<Object>的数据转换成IEnumerable<OtherObject>的数据?

How to convert data of IList<Object> to IEnumerable<OtherObject> with AutoMapper?

Class 与 IList<Object> 成员:

public class RegisterGroupEmployeeRequest : GroupEmployeeBase
{
    public IList<EmployeeBase> Employee { get; set; }
}

Class 与 IEnumerable<OtherObject> 成员:

public class RegisterGroupEmployeeCommand
{
    public RegisterGroupEmployeeCommand(Guid groupId, IList<EmployeeCommand> employee)
    {
        Employee = employee;
    }

    public IEnumerable<EmployeeCommand> Employee { get; protected set; }
}

映射器:

CreateMap<RegisterGroupEmployeeRequest, RegisterGroupEmployeeCommand>()
    .ConstructUsing(src => new RegisterGroupEmployeeCommand(src.GroupId, src.Employee));

如何使用 AutoMapper 将 IList<Object> 的数据转换为 IEnumerable<OtherObject>
或者是否有其他解决方案可以转换此类问题?

tl;dr

删除 .ConstructUsing() 并保留如下条目:

CreateMap<RegisterGroupEmployeeRequest, RegisterGroupEmployeeCommand>();

  1. 在这一行中:
.ConstructUsing(src => new RegisterGroupEmployeeCommand(src.GroupId, src.Employee));

您的员工属于 IList<EmployeeCommand> 类型,但您正试图通过 IList<EmployeeBase>

  1. 因为您已经有了如下条目:
CreateMap<EmployeeBase, EmployeeCommand>();

AutoMapper 也将处理从 IList<EmployeeBase>IList<EmployeeCommand> 的转换。

  1. 传递 Group goupId 似乎是不必要的,因为您没有在构造函数主体中使用它。
public RegisterGroupEmployeeCommand(Guid groupId, IList<EmployeeCommand> employee)
{
    Employee = employee;
}
  1. 查看第 2 点和第 3 点,您不需要 .ConstructUsing(...) 行。