2016-08-08 30 views
-2

Ich habe zwei Objekte, aber unterschiedliche Typen. Die in ihnen gespeicherten Informationen sind fast gleich, d. H. Alle Feldnamen sind in beiden Objekten fast gleich, es ist nur der Typ, der sich unterscheidet. Ich möchte die Werte eines Objekts in ein anderes kopieren. Das Objekt hat auch komplexe Typen als Felder für ex: eine Liste. Bitte schlagen Sie mir eine Bibliothek oder ein Framework vor, um dies zu tun, oder ob es eine native Methode in .net C# gibt.Kopieren Sie alle Felder eines Objekttyps in einen anderen Objekttyp in C#

+1

„Fragen fragen uns, ** empfehlen oder ein Buch, Werkzeug, Software-Bibliothek, Tutorial oder andere Off-Site-Ressource zu finden sind Wegthema ** für Stack-Überlauf, da sie dazu neigen, meinungs Antworten und Spam zu gewinnen. Beschreiben Sie stattdessen das Problem und was bisher unternommen wurde, um es zu lösen. " – ray

+0

Lesen Sie [Welches ist der beste Ansatz? AutoMapper gegen implizite (C# -Referenz)] (http://stackoverflow.com/questions/29257215/which-is-the-best-approach-automapper-against-implicit-c-reference) –

+0

Feldnamen sind in beiden Objekten fast identisch ? – Paparazzi

Antwort

1

Dieser Code erfordert einige Änderungen, die Ihren Anforderungen entsprechen. Aber insgesamt sieht es so aus.

private void button1_Click(object sender, EventArgs e) 
    { 
     classA A = new classA("test"); 
     classB B = new classB(); 

     foreach (var field in A.GetType().GetProperties()) 
     { 
      PropertyInfo pi = B.GetType().GetProperty(field.Name); 
      pi.SetValue(B, field.GetValue(A, null)); 
     } 

    } 

public class classA{ 
    public string name { get; set; } 

    public classA(string name) 
    { 
     this.name = name; 
    } 
} 

public class classB 
{ 
    public string name { get; set; } 
}