automapper

___ qstnhdr ___ Automapper zum Erstellen eines Objekts aus XML ___ answer6543753 ___

Sie müssen XML-Serialisierung in .NET auschecken - das ist der richtige Weg Serialisierung eines Objekts in XML oder Deserialisierung aus XML.

Automapper kann verwendet werden, um Eigenschaften zwischen zwei Objekten zu setzen - es geht überhaupt nicht um XML.

Weitere Ressourcen:

___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ tag123sharepoint ___ SharePoint-spezifische Fragen finden Sie auf der Website SharePoint Stack Exchange (https://sharepoint.stackexchange.com). Verwenden Sie dieses Tag zum Programmieren von Fragen, die möglicherweise SharePoint betreffen. Microsoft SharePoint ist eine Plattform und eine Familie von Softwareprodukten, die von Microsoft für Collaboration und Web Publishing entwickelt wurden. ___ answer8564071 ___

Bit spät am Tag, aber jemand hat AutoMapper verwendet, um XML einem POCO zuzuordnen, anstatt die XMLSerialization-Route zu durchlaufen. Ich habe den folgenden Blogeintrag gefunden: - Vereinfachen Sie die Verwendung von Xml-Daten mit AutoMapper und Linq-to- Xml

Dies reicht aus, um mit der Implementierung eines eigenen generischen benutzerdefinierten Resolvers zu beginnen, wenn das Beispiel nicht ausreicht.

EDIT: feste Verbindung EDIT: wirklich fester Link

    
___ tag123Automapper ___ Ein konventionsbasierter Objekt-zu-Objekt-Mapper und -Tranformer für .NET ___ tag123linqtoxml ___ LINQ-to-XML bietet eine SQL-ähnliche Abfrageerfahrung zum Navigieren, Analysieren und Aggregieren von Daten, die in XML-Dokumenten gespeichert sind. ___ answer6543756 ___

Sie können zu diesem Zweck die XML-Deserialisierung verwenden. In .NET haben wir XmlSerializer und DataContractSerializer

    
___ qstntxt ___

Wenn ich die folgende Klasse habe:

%Vor%

Und ich verwende die Sharepoint-Webdienste, die ein XML mit einem Attribut für jede Eigenschaft meiner Klasse zurückgeben, wie zum Beispiel:

%Vor%

Gibt es eine Möglichkeit, AutoMapper zu verwenden, um das XML-Fragment einer %code% -Klasseninstanz zuzuordnen?

    
___ answer27501463 ___

Blog wurde gelöscht - hier ist das Bing-Archiv des Posts von @DannyDouglass

Vereinfachen Sie die Verwendung von Xml-Daten mit AutoMapper und Linq-to-Xml

Ich habe kürzlich ein Szenario bei der Arbeit kennengelernt, bei dem mehrere SOAP-Webdienste manuell in Anspruch genommen werden mussten. Ich bin mir sicher, dass Sie sich das als ziemlich eintönig vorstellen. Ein Mitarbeiter (Seth Carney) und ich versuchten ein paar verschiedene Ansätze, aber wir entschieden uns schließlich für eine Lösung, die den Verbrauch der XML-Datei vereinfachte und schließlich den Code testbarer machte. Bei dieser Lösung ging es um den Einsatz von AutoMapper, einem Open-Source-Objekt-Objekt-Mapping-Tool, um eine Verknüpfung zwischen den XElements zu erstellen ( Ссылка ) zurückgegeben in den SOAP-Nachrichten und benutzerdefinierte Verträge, die wir erstellt haben - in einer wiederverwendbaren Art und Weise.

Ich habe eine kurze Demo zusammengestellt, die zeigt, wie Sie die öffentliche Zeitleiste von Twitter verwenden und anzeigen können ( Ссылка ) (unter Verwendung des Xml-Antworttyps der API).

Hinweis: Der Quellcode für das folgende Beispiel kann auf meiner GitHub-Seite gefunden werden: Ссылка

  1. Abrufen des Projekt-Setups

Nach dem Erstellen eines grundlegenden MVC3-Projekts (Beta-Download) und des zugehörigen Testprojekts war der erste Schritt, das AutoMapper-Paket zu installieren. Ich benutze NuGet, das kürzlich angekündigte Paketverwaltungssystem von Microsoft, um jegliche Open-Source-Abhängigkeiten zu installieren. Der folgende Befehl war alles, was benötigt wurde, um AutoMapper in meinem MVC3-Projekt einzurichten (lesen Sie mehr über NuGet hier ( Ссылка ) und hier ( Ссылка )):

%Vor%
  1. Erstellen der Zuordnung

Wenn AutoMapper installiert ist, kann ich mit dem Erstellen der für die XML-zu-Objekt-Zuordnung erforderlichen Komponenten beginnen. Der erste Schritt besteht darin, einen schnellen Vertrag zu erstellen, der in meiner Anwendung verwendet wird, um das Tweet-Objekt darzustellen:

%Vor%

Nichts Verrücktes hier - nur eine einfache Einheit. Dies sind alle Felder, die in der Antwort von der Twitter-API unter Verwendung eines anderen Namens für einige Felder bereitgestellt werden. In einfachen Fällen, in denen die Quell- und Zielobjekte denselben Namen haben, können Sie eine Karte sehr schnell mit dieser Syntax einrichten:

%Vor%

AutoMapper unterstützt jedoch Xml standardmäßig nicht. Ich muss die Felder angeben, die ich zuordnen werde. Mit der Fluent-API in AutoMapper kann ich meine Feldzuordnungen verketten. Sehen Sie sich ein Beispielfeld an, das in meinem Beispiel abgebildet ist - den Body des Tweets:

%Vor%

Es mag zunächst kompliziert aussehen, aber hier geschieht nur, dass wir AutoMapper Details darüber zur Verfügung stellen, welchen Wert ich in meinem Quellobjekt verwenden soll und wie es der Eigenschaft des Zielobjekts zugeordnet wird. Es gibt eine bestimmte Zeile, auf die ich mich im obigen Body-Feld-Mapping konzentrieren möchte:

%Vor%

Der XElementResolver ist ein benutzerdefinierter Wert-Resolver ( Ссылка ), den Seth entwickelt hat Analysieren des XmlElement-Quellobjekts, um einen stark typisierten Wert für die Verwendung im Mapping abzurufen. Ich werde das in einem Moment genauer beschreiben, aber bevor wir weitermachen, werfen Sie einen Blick auf mein vollständiges Mapping:

%Vor%
  1. Der generische XElementResolver

Dieser benutzerdefinierte Wert-Resolver ist der echte Schlüssel, mit dem diese XElement-to-Contract-Maps in der ursprünglichen Lösung funktionieren. Ich habe diesen Resolver in diesem Beispiel wie oben beschrieben wieder verwendet. Das war alles, was zum Erstellen der benutzerdefinierten Resolver-Klasse erforderlich war:

%Vor%

Dieser generische XElementResolver ermöglicht es, den Typ des in unserer obigen Abbildung abgerufenen Wertes einfach zu übergeben. Beispielsweise wird die folgende Syntax verwendet, um den Wert, der aus dem XmlElement abgerufen wird, in der obigen Deklaration .ForMember () des ID-Felds zu schreiben:

%Vor%

Wenn mein Mapping vollständig konfiguriert und instanziiert ist, kann ich die Twitter-API aufrufen und AutoMapper verwenden, um die neueste öffentliche Zeitleiste anzuzeigen.

  1. Die Stücke zusammenfügen

Ich habe eine einfache Klasse erstellt, die für das Abrufen der Twitter-API-Antwort verantwortlich ist:

%Vor%

Die GetPublicTimeline-Methode ist eine einfache Methode, die, wie Sie es erraten haben, die öffentliche Zeitleiste von Twitter unter Verwendung der zuvor erstellten Karte zurückgibt:

%Vor%

Im HomeController meiner MVC3-Site kann ich schnell die Abrufmethode aufrufen und die letzten 10 Ergebnisse anfordern:

%Vor%

Und schließlich, nach ein wenig Formatierung in meiner Ansicht mit der neuen Razor View-Engine von Microsoft, habe ich meine öffentliche Zeitleiste angezeigt!

    
___
1
Antwort

Kann Automapper von einem Verzeichnis von Eigenschaften zu einem flachen Ziel mappen?

Quelle enthält einen Eigenschaftenbeutel in einem Dictionary. Kann Automapper die Einträge im Dictionary den einzelnen Eigenschaften des Ziels zuordnen, basierend auf dem Abgleich der Wörterbuchschlüssel mit den Namen der Eigenschaften des Zielt...
12.01.2011, 19:34
4
Antworten

So ändern Sie Editmodel / Postmodel zum Domänenmodell

In einem ASP.NET MVC-Projekt verwenden wir AutoMapper, um vom Domänenmodell zum Viewmodell zu mappen - und dabei manchmal auch eine Hierarchie einzuebnen. Das funktioniert wie ein Zauber und macht die Rendering-Logik unserer Ansichten sehr schla...
03.07.2012, 15:05
2
Antworten

Stark typisierte generische Attributalternativen

Beginnen wir mit einem einfachen View-Modell: %Vor% Eine Dropdown-Liste könnte folgendermaßen aussehen: %Vor% Da eine Dropdown-Liste jedoch zwei Werte benötigt, kann sie nicht wie folgt verwendet werden: %Vor% mit einer Sicht, die Fo...
13.05.2015, 21:19
1
Antwort

Verwenden Sie automapper, um eine Entity Framework-Entität zu aktualisieren

Ich versuche Entity Framework zu verwenden und habe Automapper meine Entität von meinem Vertrag aktualisieren lassen. Mein Code sieht so aus: %Vor% (Hinweis: Ich verwende das Repository-Muster. dataAccess.FindOne ruft CreateQuery auf, um...
18.10.2011, 16:02
3
Antworten

AutoMapper-Zuordnung zu einer Eigenschaft einer nullwertbaren Eigenschaft

Wie können Sie eine Eigenschaft einer Untereigenschaft zuordnen, die möglicherweise null ist? z. B. schlägt der folgende Code mit einer NullReferenceException fehl, da die Benutzereigenschaft des Kontakts null ist. %Vor% Ich möchte den Be...
04.11.2010, 00:28
1
Antwort

Automapper-Null-Eigenschaften

Ich ordne meine Objekte mit Automapper auf dtos ab. %Vor% Wenn ich OrderItem mit der Version null habe, bekomme ich eine Ausnahme bei: %Vor%     
21.06.2010, 09:59
2
Antworten

AutoMapper: Erzeuge eine Instanz des Zieltyps, wenn source == null ist

Ist es möglich, AutoMapper so zu konfigurieren, dass eine neue Instanz des Zieltyps zurückgegeben wird, wenn das Quellobjekt null ist? %Vor%     
04.08.2010, 16:53
3
Antworten

AutoMapper.Mapper.CreateMapTSource, TDestination () 'ist veraltet

Ich muss Klassen wie %Vor% Meine Anforderung besteht darin, die ID der Klasse A der ID der Klasse C zuzuordnen. Was ich bis jetzt gemacht habe, war:      Mapper.CreateMap (). ForMember (des = & gt; des.C.Id, src = & gt; src.MapFrom (x = & gt...
04.04.2016, 08:56
3
Antworten

Wie kann ich den SecurityException-Fehler loswerden, wenn ich versuche, Automapper in ASP.NET MVC zu verwenden?

Ich entwickle eine ASP.NET MVC-Anwendung mit NHibernate und ich versuche, Automapper zu verwenden, um die Domäne-Objekte aus den DTO-Objekten auszublenden, die an die Ansicht gesandt werden: ClassLibrary mit meiner Domain (für NHibernate) un...
08.05.2010, 15:10
2
Antworten

Fehler beim Kompilieren der AutoMapper .Formember-Methode. Ungültige Überladung

Ich versuche mit Automapper zu mappen Hier ist meine aktuelle Zuordnung: %Vor% So von einem NameAddress-Quellobjekt möchte ich dem Zielobjekt PersonalDetails zuordnen. Der Rest der Eigenschaften an der Quelle und am Ziel ist identisch, da...
15.02.2013, 14:24