3 Stimmen

Wie konfiguriert man AutoMapper, wenn es sich nicht um eine ASP.net-Anwendung handelt?

Ich verwende AutoMapper in einer Reihe von Projekten innerhalb meiner Lösung. Diese Projekte können unabhängig voneinander auf mehreren Servern bereitgestellt werden.

In der Dokumentation zu AutoMapper heißt es:

Wenn Sie den statischen Mapper verwenden Methode verwenden, muss die Konfiguration nur einmal pro AppDomain erfolgen. Das bedeutet der beste Ort um die Konfigurationscode in der Anwendung Start der Anwendung zu platzieren, z. B. in der Datei Global.asax für ASP.NET-Anwendungen.

Während einige der Projekte wird ASP.net sein - die meisten davon sind Klassenbibliotheken / Windows-Dienste.

Wo sollte ich in diesem Fall meine Zuordnungen konfigurieren?

2voto

joshlrogers Punkte 1161

Die Idee, dass es nur einmal pro AppDomain erforderlich sein sollte, bleibt, soweit ich das beurteilen kann, unverändert. Ich führe meine Mappings immer bei der Initialisierung des Programms selbst durch. Ich verwende zwar keinen AutoMapper, aber ich verwende eine IoC-Bibliothek (Windsor), die eine Art von Mapping erfordert, und das wird in meiner program.cs-Datei durchgeführt. Wenn die Anwendung geladen wird, wird die Zuordnung durchgeführt, und da der Resolver statisch ist und sich in einer gemeinsam genutzten Bibliothek befindet, ist er global verfügbar.

Ich weiß nicht, ob das Ihre Frage beantwortet oder nicht, aber im Grunde hat jede Anwendung einen Einstiegspunkt, und wenn Sie Ihre Zuordnungen unmittelbar nach dem Einstieg benötigen, dann ist der Einstieg der beste Ort, um sie abzulegen.

0voto

Kaido Punkte 3193

Ich habe mich dafür entschieden, meine Mappings in separaten Klassen für jedes Projekt zu speichern, damit sie wiederverwendbar sind.

    protected void Application_Start()
    {
        RegisterMaps();
    }

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

Auf diese Weise kann ich einfach BusinessLogicAutoMapperSettings.Register() aufrufen, wenn ich nur meine BusinessLogic-DLL in einer anderen Anwendung oder einem Webservice wiederverwenden möchte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X