如何使用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>();
- 在这一行中:
.ConstructUsing(src => new RegisterGroupEmployeeCommand(src.GroupId, src.Employee));
您的员工属于 IList<EmployeeCommand>
类型,但您正试图通过 IList<EmployeeBase>
。
- 因为您已经有了如下条目:
CreateMap<EmployeeBase, EmployeeCommand>();
AutoMapper 也将处理从 IList<EmployeeBase>
到 IList<EmployeeCommand>
的转换。
- 传递
Group goupId
似乎是不必要的,因为您没有在构造函数主体中使用它。
public RegisterGroupEmployeeCommand(Guid groupId, IList<EmployeeCommand> employee)
{
Employee = employee;
}
- 查看第 2 点和第 3 点,您不需要
.ConstructUsing(...)
行。
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>();
- 在这一行中:
.ConstructUsing(src => new RegisterGroupEmployeeCommand(src.GroupId, src.Employee));
您的员工属于 IList<EmployeeCommand>
类型,但您正试图通过 IList<EmployeeBase>
。
- 因为您已经有了如下条目:
CreateMap<EmployeeBase, EmployeeCommand>();
AutoMapper 也将处理从 IList<EmployeeBase>
到 IList<EmployeeCommand>
的转换。
- 传递
Group goupId
似乎是不必要的,因为您没有在构造函数主体中使用它。
public RegisterGroupEmployeeCommand(Guid groupId, IList<EmployeeCommand> employee)
{
Employee = employee;
}
- 查看第 2 点和第 3 点,您不需要
.ConstructUsing(...)
行。