.NET: Gibt es eine Klasse, um Eigenschaften einer Klasse in eine andere Klasse zu kopieren

7

Ich habe eine Funktion geschrieben, die die Eigenschaften einer Klasse in eine andere kopiert, um eine Kopie eines Objekts zu erstellen.

So etwas wie

%Vor%

wobei myObject und myOtherObject vom selben Typ sind. Ich mache es, indem ich es einfach mache.

%Vor%

Ich bin mir ziemlich sicher, dass ich in der Vergangenheit ein .NET-Objekt verwendet habe, das dies automatisch getan hat, durch Reflektion, aber ich kann mich nicht daran erinnern ... oder stelle ich mir vor, dass eine solche Methode existiert?

Ja, mir ist Auto Mapper bekannt, aber ich war mir sicher (nicht so sehr), dass es ein .NET-Objekt gibt, das den Job erledigt. Vielleicht nicht!

    
Bob 10.11.2010, 09:27
quelle

7 Antworten

9

Sie können sich den AutoMapper ansehen.

    
Darin Dimitrov 10.11.2010 09:29
quelle
5

Sie sollten AutoMapper für diesen Job verwenden.

    
Preet Sangha 10.11.2010 09:29
quelle
4
%Vor%     
Andreas 19.04.2016 08:55
quelle
1

Versuchen Sie die Beschreibung in diesem Link:

.NET Reflection - Copy-Klasse Eigenschaften

    
pyCoder 10.11.2010 09:29
quelle
1

Dieser Code sollte für grundlegende Eigenschaftstypen funktionieren, nicht sicher, wie er sich für etwas Komplexes (Listen, Arrays, benutzerdefinierte Klassen) eignet. Sollte aber ein Ausgangspunkt sein:

%Vor%     
mike 10.11.2010 09:39
quelle
0

Sehr einfach ausgedrückt: Wie wir wissen, sind Klassen Referenztypen in C # .NET, d. h. wenn wir ein Objekt einer Klasse wie

erstellen %Vor%

Dann wird C1 (Referenzvariable) auf dem Speicherstapel gespeichert, und das neue Objekt Customer () wird auf Heap gespeichert.

Wenn wir also eine Klasse in eine andere Klasse kopieren, die im Grunde Ihre Frage ist, können Sie so etwas tun:

%Vor%

Doing kopiert die C1-Referenzvariable in C2, aber warum habe ich über Stack und Heap geschrieben, weil Sie mit der C2-Referenzvariable die Objekteigenschaften sowohl von C1 als auch von C2 auf dasselbe Objekt in HEAP.Something Like

ändern können %Vor%

Wenn Sie jetzt versuchen, auf C1.Name zuzugreifen, sehen Sie, dass es in "Mukesh" geändert wird.

    
Rakeshkumar Das 08.12.2016 03:10
quelle

Tags und Links