Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET Core中手动注册AutoMapper配置文件?_C#_Asp.net Core_Automapper - Fatal编程技术网

C# 如何在ASP.NET Core中手动注册AutoMapper配置文件?

C# 如何在ASP.NET Core中手动注册AutoMapper配置文件?,c#,asp.net-core,automapper,C#,Asp.net Core,Automapper,我正在使用ASP.NET内核和内置容器 自动注册已完成: var config=new-MapperConfiguration(c=>c.AddProfiles(typeof(Startup)); services.AddSingleton(s=>config.CreateMapper()); 这会自动1)配置AutoMapper,2)注册程序集中找到的所有配置文件 但是我想手动注册我的个人资料。如何做到这一点?您可以创建一个新的AutoMapper.MapperCOnfiguration,而

我正在使用ASP.NET内核和内置容器

自动注册已完成:

var config=new-MapperConfiguration(c=>c.AddProfiles(typeof(Startup));
services.AddSingleton(s=>config.CreateMapper());
这会自动1)配置AutoMapper,2)注册程序集中找到的所有配置文件


但是我想手动注册我的个人资料。如何做到这一点?

您可以创建一个新的AutoMapper.MapperCOnfiguration,而不是调用AddProfiles,您可以对要注册的每个配置文件使用CreateMap方法。 像这样的

var config = new AutoMapper.MapperConfiguration(cfg =>
{
    cfg.CreateMap<myObj, myObjDto>();
});

var mapper = config.CreateMapper();
var config=new AutoMapper.MapperConfiguration(cfg=>
{
CreateMap();
});
var mapper=config.CreateMapper();

然后只需注入mapper就完成了。

只需使用该方法的sigular版本

var config = new MapperConfiguration(c => {
    c.AddProfile<ProfileA>();
    c.AddProfile<ProfileB>();
});
services.AddSingleton<IMapper>(s => config.CreateMapper());
var config=新的MapperConfiguration(c=>{
c、 AddProfile();
c、 AddProfile();
});
services.AddSingleton(s=>config.CreateMapper());

我在ASP.NET核心项目中使用了Autofac——以下是我的代码:

(以下是Autofac模块的声明)

下面是我们注册服务的方式:

public IServiceProvider ConfigureServices(IServiceCollection services)
{
    var containerBuilder = new ContainerBuilder();
    containerBuilder.RegisterModule<DefaultModule>();
    containerBuilder.Populate(services);
    var container = containerBuilder.Build();
    return new AutofacServiceProvider(container);
}
公共IServiceProvider配置服务(IServiceCollection服务)
{
var containerBuilder=新的containerBuilder();
containerBuilder.RegisterModule();
containerBuilder.Populate(服务);
var container=containerBuilder.Build();
返回新的AutofacServiceProvider(容器);
}

检查此选项如何配置automapper
public class DefaultModule : Module
{
    protected override void Load(ContainerBuilder builder)
    {
        var mapperConfiguration = new MapperConfiguration(cfg => cfg.AddProfile(new AutoMapperProfileConfiguration()));
        var mapper = mapperConfiguration.CreateMapper();
        builder.Register(c => mapper).As<IMapper>().SingleInstance();
    }
}
public class AutoMapperProfileConfiguration : Profile
{
    public AutoMapperProfileConfiguration()
    {
        CreateMap<TeamDto, Team>();
    }
}
public IServiceProvider ConfigureServices(IServiceCollection services)
{
    var containerBuilder = new ContainerBuilder();
    containerBuilder.RegisterModule<DefaultModule>();
    containerBuilder.Populate(services);
    var container = containerBuilder.Build();
    return new AutofacServiceProvider(container);
}