AutoMapper的使用
根据上传的文件内容,可以看到AutoMapper被用来映射不同对象之间的属性。具体来说,它用于将一个类的实例转换为另一个类的实例,而这两个类拥有相似的结构或部分相似的属性。以下是基于提供的代码对AutoMapper用法的总结:
-
安装和引用:
- 在
TodoList.Api.csproj文件中,我们看到项目引用了AutoMapper和AutoMapper.Extensions.Microsoft.DependencyInjection包。<PackageReference Include="AutoMapper" Version="12.0.1" /> <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
- 在
-
注册服务:
- 在
Startup.cs文件中的ConfigureServices方法里,通过调用services.AddAutoMapper(typeof(Startup));来注册AutoMapper服务。这会扫描当前程序集(即包含Startup类的程序集)并自动配置所有Profile类。services.AddAutoMapper(typeof(Startup));
For .NET 6, we have to modify the Program class:
builder.Services.AddAutoMapper(typeof(Program)); - 在
-
创建映射配置:
TodoListMappingProfile.cs文件定义了一个继承自Profile的类,该类包含了具体的映射规则。在这个例子中,它建立了TodoItem和TodoListDto之间双向的映射关系。public class TodoListMappingProfile : Profile { public TodoListMappingProfile() { CreateMap<TodoItem, TodoListDto>().ReverseMap(); } }
-
使用映射:
-
在
TodoItemsController.cs和其他控制器中,依赖注入了IMapper接口,并在需要的地方使用它来进行对象间的转换。例如,在GetTodoItem方法中,从数据库获取到的TodoItem实体被映射到了DTO(数据传输对象)TodoListDto。return Ok(_mapper.Map<TodoListDto>(item)); -
类似地,在
PostTodoItem方法中,传入的DTO被映射回实体对象以进行保存或更新操作。await _service.CreateTodoItem(_mapper.Map<TodoItem>(todoItem));
-
浙公网安备 33010602011771号