Как настроить AutoMapper, если это не приложение ASP.net?

Я использую AutoMapper в ряде проектов в рамках своего решения. Эти проекты могут быть развернуты независимо на нескольких серверах.

В документации для AutoMapper сказано:

Если вы используете статический метод Mapper, настройка должна выполняться только один раз для каждого AppDomain. Это означает, что код конфигурации лучше всего размещать при запуске приложения, например, в файле Global.asax для приложений ASP.NET.

Хотя некоторые проекты будут ASP.net, большинство из них представляют собой библиотеки классов/службы Windows.

Где я должен настраивать сопоставления в этом случае?


person Alex    schedule 10.05.2010    source источник


Ответы (2)


Насколько я могу судить, идея о том, что это требуется только один раз для каждого AppDomain, остается прежней. Я всегда выполняю сопоставления при инициализации самой программы. Хотя я не использую AutoMapper, я использую библиотеку IoC (Windsor), которая требует своего рода сопоставления, и это делается из моего файла program.cs. Поэтому, когда приложение загружается, оно выполняет сопоставление, а поскольку преобразователь является статическим и находится в общей библиотеке, он доступен глобально.

Я не знаю, отвечает ли это на ваш вопрос или нет, но, по сути, каждое приложение имеет точку входа, и если вам нужны сопоставления сразу после входа, то запись — лучшее место для их размещения.

person joshlrogers    schedule 10.05.2010

Я решил хранить свои сопоставления в отдельных классах для каждого проекта, чтобы их можно было использовать повторно.

    protected void Application_Start()
    {
        RegisterMaps();
    }

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

Таким образом, я могу легко вызвать BusinessLogicAutoMapperSettings.Register(), если мне нужно повторно использовать только мою dll BusinessLogic в другом приложении или веб-службе.

person Kaido    schedule 19.11.2010