代码之家  ›  专栏  ›  技术社区  ›  Alex

如果不是ASP.NET应用程序,如何配置automapper?

  •  3
  • Alex  · 技术社区  · 14 年前

    我在我的解决方案中的许多项目中使用automapper。 这些项目可以独立部署在多个服务器上。

    在Automapper的文档中,它说:

    如果使用静态映射器 方法,配置只需要 每个AppDomain发生一次。那意味着 最适合放置 配置代码正在应用中 启动,例如global.asax文件 对于ASP.NET应用程序。

    同时 一些 其中一个项目将是ASP.NET,其中大部分是类库/Windows服务。

    在这种情况下,我应该在哪里配置映射?

    2 回复  |  直到 14 年前
        1
  •  2
  •   joshlrogers    14 年前

    据我所知,每个AppDomain只需要一次就可以保持不变。我总是在程序本身初始化时执行映射。虽然我不使用automapper,但我使用的是一个IOC库(windsor),它需要各种映射,这是从我的program.cs文件中完成的。因此,当应用程序加载时,它会执行映射,并且由于解析器是静态的,并且在共享库中,它是全局可用的。

    我不知道这是否回答了你的问题,但基本上每个应用程序都有一个入口点,如果你在入口后立即需要映射,那么入口是放置它们的最佳位置。

        2
  •  0
  •   Kaido    14 年前

    我已经选择将我的映射存储在每个项目的单独类中,以便它们可以重用。

        protected void Application_Start()
        {
            RegisterMaps();
        }
    
        private void RegisterMaps()
        {
            WebAutoMapperSettings.Register();
            BusinessLogicAutoMapperSettings.Register();
        }
    

    这样,如果要在另一个应用程序或Web服务中仅重用BusinessLogicDLL,我可以轻松地调用BusinessLogicAutoMapperSettings.register()。