自动映射数组 class

Automapping an array class

我有一个目标对象为

ArrayOfStudents[]

包含

StudentId, AddressInfo, MarksInfo

源对象是

public class Details
{
   public Student[] Student;

)

学生 class 包含

StudentId、AddressInfo、MarksInfo

我想映射 Student[]ArrayOfStudents[]

我尝试了以下方法,但没有用

Map.CreateMap<Student,ArrayOfStudents>()
.ReverseMap();

Map.CreateMap<Details.Student,ArrayOfStudents>()
.ReverseMap();

我应该如何映射这个案例?

它抛出以下未映射的错误

StudentId、AddressInfo、MarksInfo

使用 Automapper,您可以将一种类型映射到另一种类型。当您这样做时,将自动映射相同类型的数组。

在您的例子中,您将在 ArrayOfStudentsStudent 之间创建一个映射。这将是一个简单的映射,因为两种映射类型之间的类型和名称是相同的:

public class MappingProfile : Profile
{
    public MappingProfile()
    {
        this.CreateMap<Student, ArrayOfStudents>();

        this.CreateMap<ArrayOfStudents, Student>();
    }
}

现在,无论您打算在哪里进行实际映射(例如 RESTful 控制器),您都可以执行以下操作:

public class MyController
{
    private readonly IMapper mapper;

    public MyController(IMapper mapper)
    {
        this.mapper = mapper;
    }

    // Then in any of your methods:
    [HttpGet]
    public IActionResult MyMethod()
    {
        var objectsToMap = details.Student; // This is an array of Student type.
        var mappedObjects = this.mapper.Map(objectsToMap); // This will be an array of ArrayOfStudents.
        // do what you will with the mapped objects.
    }
}

想法是,您注册 types 的映射(包括类型中成员的类型)。然后这些类型的集合的映射由 Automapper 自动处理。