C# 如何初始化automapper accross Visual Studio项目

C# 如何初始化automapper accross Visual Studio项目,c#,asp.net-mvc,automapper,C#,Asp.net Mvc,Automapper,我正在Visual Studio ASP.NET MVC应用程序的多个dll项目中使用automapper。我在每个项目中创建了一个AutoMapperConfiguration类,我在主WebUI项目的应用程序启动方法中调用该类 问题是,我正试图以同样的方式为我的Visual Studio解决方案的每个单独项目初始化automapper,但我得到一个错误,说automapper只能初始化一次 如果我只为一个ddl项目而不是多个dll项目初始化automapper,那么初始化automapper

我正在Visual Studio ASP.NET MVC应用程序的多个dll项目中使用automapper。我在每个项目中创建了一个AutoMapperConfiguration类,我在主WebUI项目的应用程序启动方法中调用该类

问题是,我正试图以同样的方式为我的Visual Studio解决方案的每个单独项目初始化automapper,但我得到一个错误,说automapper只能初始化一次

如果我只为一个ddl项目而不是多个dll项目初始化automapper,那么初始化automapper的方式是有效的,而且在automapper的8.1.1版本中,我还收到一条警告,说Mapper.Initialize方法被降级了。在版本9.0.0中,initialize方法不再存在

我怎样才能做到这一点

谢谢你的帮助

E

我在每个dll项目中都有以下代码:

public class AutoMapperConfiguration
    {
        public static void ConfigureAutoMapper()
        {
            Mapper.Initialize(cfg =>
            {
                cfg.AddProfile<BusinessToDomainProfile>();
                cfg.AddProfile<DomainToBusinessProfile>();
            });
        }
    }

只能初始化映射器一次。通常在“设置为启动项目”中进行初始化,因此在您的情况下,收集所有这些cfg.AddProfile并将它们放入global.asax.cs应用程序\u Start initialize调用中

只能初始化映射器一次。通常在“设置为启动项目”中进行初始化,因此在您的情况下,收集所有这些cfg.AddProfile并将它们放入global.asax.cs应用程序\u Start initialize调用中

我正在使用Global.asax.cs应用程序的启动方法开发一款更老的应用程序,该方法可以从一系列项目中配置AutoMapper配置文件,如下所示:

Mapper.AddProfile<AutoMapperConfigurationApi>();
Mapper.AddProfile<AutoMapperConfiguration>();
Mapper.AddProfile<AutoMapperWebConfiguration>();
使用如下设置的AutoMapperProfile.cs文件:

public class AutoMapperProfile : Profile
{
    public AutoMapperProfile()
    {
        CreateMap<MyModel, MyModelDto>();
    }
}

我正在使用Global.asax.cs应用程序_Start方法开发一款更老的应用程序,该方法可从一系列项目中配置AutoMapper配置文件,如下所示:

Mapper.AddProfile<AutoMapperConfigurationApi>();
Mapper.AddProfile<AutoMapperConfiguration>();
Mapper.AddProfile<AutoMapperWebConfiguration>();
使用如下设置的AutoMapperProfile.cs文件:

public class AutoMapperProfile : Profile
{
    public AutoMapperProfile()
    {
        CreateMap<MyModel, MyModelDto>();
    }
}

将概要文件类放在不同的项目中,并在ASP.NET MVC项目中初始化AutoMapper一次

// Load all profiles in an assembly by specifying a type from the assembly
Mapper.Initialize(cfg => {
    cfg.AddProfiles(typeof(Student), typeof(Course));
});

不要在任何类库项目dll中调用Mapper.Initialize。可执行Web应用程序、控制台应用程序等负责初始化

将概要文件类放在不同的项目中,并在ASP.NET MVC项目中初始化AutoMapper一次

// Load all profiles in an assembly by specifying a type from the assembly
Mapper.Initialize(cfg => {
    cfg.AddProfiles(typeof(Student), typeof(Course));
});

不要在任何类库项目dll中调用Mapper.Initialize。可执行Web应用程序、控制台应用程序等负责初始化

这真是太棒了!!!我仍然需要找出如何替换映射器。初始化。。。方法,因为他们在9.0.0.0版中删除了它,我还没有完全弄清楚如何在他们的网站上使用实例方式,而不是他们所谓的静态映射器:@Ephie你使用依赖项注入吗?@Ephie如果你喜欢静态,你必须自己将其存储到静态变量中。这很好!!!我仍然需要找出如何替换映射器。初始化。。。方法,因为他们在9.0.0.0版中删除了它,我还不太明白如何在他们的网站上使用实例方式,而不是他们所说的静态映射器:@Ephie你使用依赖项注入吗?@Ephie如果你喜欢静态,你必须自己将其存储到静态变量中。您好,我认为你不能使用受保护的覆盖void Configure方法以后,我必须使用构造函数:public class DomainToBusinessProfile:Profile{public DomainToBusinessProfile{CreateMap;}}}你好,我认为你不能再使用受保护的覆盖void Configure方法了,我必须使用构造函数:public class DomainToBusinessProfile:Profile{public DomainToBusinessProfile{CreateMap;}}
// Load all profiles in an assembly by specifying a type from the assembly
Mapper.Initialize(cfg => {
    cfg.AddProfiles(typeof(Student), typeof(Course));
});