资源描述
core6.0 atutomap用法
AutoMapper 是一个对象到对象的映射器,通常用于将一个对象的属性映射到另一个对象的属性。这在数据转换、DTO(数据传输对象)创建等场景中非常有用。
在.NET 6.0中,使用AutoMapper的基本步骤如下:
1. 安装AutoMapper
首先,你需要通过NuGet安装AutoMapper包。
bash复制代码
dotnet add package AutoMapper
2. 定义你的模型
假设你有两个模型,SourceModel 和 DestinationModel。
csharp复制代码
public class SourceModel
{
public string Name { get; set; }
public int Age { get; set; }
}
public class DestinationModel
{
public string FullName { get; set; }
public int Years { get; set; }
}
3. 创建映射配置
在Startup.cs或任何初始化代码中,你需要定义如何从SourceModel映射到DestinationModel。
csharp复制代码
var configuration = new MapperConfiguration(cfg =>
{
cfg.CreateMap<SourceModel, DestinationModel>()
.ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name + " SomeSuffix"))
.ForMember(dest => dest.Years, opt => opt.MapFrom(src => src.Age));
});
var mapper = configuration.CreateMapper();
4. 使用映射
一旦你有了映射器,你就可以很容易地将一个对象映射到另一个对象。
csharp复制代码
var source = new SourceModel { Name = "John", Age = 30 };
var destination = Mapper.Map<DestinationModel>(source);
现在,destination对象会有FullName为"John SomeSuffix"和Years为30。
5. 配置Profile
对于更复杂的映射,你可能希望使用Profile。这允许你将映射配置分离到单独的类中。
csharp复制代码
public class MyMappingProfile : Profile
{
public MyMappingProfile()
{
CreateMap<SourceModel, DestinationModel>()
.ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name + " SomeSuffix"))
.ForMember(dest => dest.Years, opt => opt.MapFrom(src => src.Age));
}
}
然后,在创建映射配置时,你可以使用此Profile:
csharp复制代码
var configuration = new MapperConfiguration(cfg =>
{
cfg.AddProfile<MyMappingProfile>();
});
6. 依赖注入
在ASP.NET Core项目中,你可以很容易地将AutoMapper集成到依赖注入容器中。这样,你就可以在控制器或其他服务中注入IMapper,并使用它来执行映射。
csharp复制代码
public void ConfigureServices(IServiceCollection services)
{
services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
// ...
}
然后,在你的控制器或服务中:
csharp复制代码
public class MyController : ControllerBase
{
private readonly IMapper _mapper;
public MyController(IMapper mapper)
{
_mapper = mapper;
}
public IActionResult SomeAction()
{
var source = new SourceModel { Name = "John", Age = 30 };
var destination = _mapper.Map<DestinationModel>(source);
// ...
}
}
这就是在.NET 6.0中使用AutoMapper的基本方法。你可以根据需要扩展和定制这些配置。
展开阅读全文