.NET Core中依赖注入AutoMapper的方法示例
AutoMapper是常用于对象映射的库,它可以方便地将一个对象的属性映射到另一个对象中。使用依赖注入(Dependency Injection,DI)可以将AutoMapper集成到.NET Core中,使其更加易于使用和管理。
第一步:安装AutoMapper和AutoMapper.Extensions.Microsoft.DependencyInjection
在.NET Core中使用AutoMapper需要先安装以下两个包:
- AutoMapper
- AutoMapper.Extensions.Microsoft.DependencyInjection
可以使用以下NuGet命令安装:
Install-Package AutoMapper
Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection
第二步:注册AutoMapper
要注册AutoMapper,首先要创建一个Profile类,其中包含将源对象映射到目标对象所需的所有配置。以下是一个简单的示例:
using AutoMapper;
public class MyProfile : Profile
{
public MyProfile()
{
CreateMap<SourceObject, DestinationObject>();
}
}
在MyProfile类中,CreateMap方法指定了从SourceObject到DestionationObject的属性映射关系。
接下来,在.NET Core的Startup类中,注册AutoMapper和MyProfile:
using AutoMapper;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
public class Startup
{
public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddAutoMapper(typeof(MyProfile));
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
}
}
这里,AddAutoMapper方法使用MyProfile类型作为参数,指示应在AutoMapper中注册MyProfile。从现在开始,当使用AutoMapper进行对象映射时,MyProfile中定义的映射规则将自动应用。
示例一:使用AutoMapper进行对象映射
以下是一个简单的示例,演示如何使用AutoMapper在.NET Core中进行对象映射:
using AutoMapper;
public class MyService
{
private readonly IMapper _mapper;
public MyService(IMapper mapper)
{
_mapper = mapper;
}
public void DoMapping()
{
var source = new SourceObject { Name = "John", Age = 30 };
var dest = _mapper.Map<DestinationObject>(source);
Console.WriteLine(dest.Name); // 输出:John
Console.WriteLine(dest.Age); // 输出:30
}
}
在MyService的构造函数中注入了IMapper接口,使用该接口可以在代码中方便地使用AutoMapper进行对象映射。
示例二:使用AutoMapper进行集合映射
以下是另一个示例,演示如何使用AutoMapper在.NET Core中对集合进行映射:
using AutoMapper;
using System.Collections.Generic;
public class MyService
{
private readonly IMapper _mapper;
public MyService(IMapper mapper)
{
_mapper = mapper;
}
public void DoCollectionMapping()
{
var sources = new List<SourceObject>
{
new SourceObject { Name = "John", Age = 30 },
new SourceObject { Name = "Jane", Age = 25 },
new SourceObject { Name = "Bob", Age = 40 }
};
var dest = _mapper.Map<List<DestinationObject>>(sources);
foreach (var d in dest)
{
Console.WriteLine($"{d.Name}: {d.Age}");
}
// 输出:
// John: 30
// Jane: 25
// Bob: 40
}
}
这里我们使用了List类型作为源对象,使用了IMapper接口的Map方法将其映射到List
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:.NET Core中依赖注入AutoMapper的方法示例 - Python技术站