Reflection, Daten von Objekt zu Objekt kopieren

gamer001

Grünschnabel
Hallo alle,
vielleicht könnt ihr mir helfen.
ich versuche Werte/Daten von eine Objekt zu an deren Objekt über die Properties zukopieren.
Leider klappt es nicht, bin auch solangsam ratlos.

Die beiden Objekte sind von der selben Klasse, nur in eine Andren Namespace.
Also. wollte ich mit hilfe Reflection, die Properties aus lesen und dann die entsprechen Daten dann kopiren.


//EDIT
mein Umsetzungsversuch
.
.
.
Code:
using System.Reflection;
using NameSpaceObjektCopy.spacea;
namespace NameSpaceObjektCopy
{
    public partial class Form1 : Form
    {
        Objekt objQuelle;       
        spaceb.Objekt objZiel; 
        public Form1()
        {
            InitializeComponent();
            objQuelle = new Objekt();
            objZiel = new NameSpaceObjektCopy.spaceb.Objekt();
        }
        private void obj()
        {
            Type t = objZiel.GetType();
            PropertyInfo[] piList = t.GetProperties();

            foreach (PropertyInfo pi in piList)
            {
                if (pi != null)
                {
                    object value = pi.GetValue(objQuelle, null);
                    if (value is System.String)
                        pi.SetValue(objZiel, value.ToString(), null);
                    if (value is System.Int32)
                        pi.SetValue(objZiel, value.ToString(), null);
                }
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            obj();
        }
       
    }
}
Die KLASSE, die Objekte objQuelle und objZiel sind von den KlassenTyp

Code:
class Objekt
    {
        private string Name;
        private string Name2;
        private int zahl;
        public Objekt()
        {
            Name = "NameB1xy";
            Name2 = "NameB2xy";
            zahl = 10;
        }        
        
        public string NameB1 
        {
            get { return Name; }
            set { Name = value; }
        }
        public string NameB2
        {
            get { return Name2; }
            set { Name2 = value; }
        }
        public int ZahlB 
        {
            get { return zahl; }
            set { zahl = value; }
        }
    }
 
Zuletzt bearbeitet:
Hi

Wieso erstellst du nicht einfach einen Kontruktor oder eine Factory-Methode, die die Quelle als Parameter übernimmt?

Wie äußert sich denn "klappt nicht"? Hast du geprüft, ob ob GetValue die richtigen Werte hat?
Zudem fragst du nicht die PropertyInfos vom Ziel ab. Wenn du sagst, dass beide Klassen in unterschiedlichen Namespace liegen sind es auch unterschiedliche Klassen und demnach sind auch die PropertyInfos andere


//EDIT
Und bitte setz deinen Quellcode in entsprechende Code-Tags, dass mach ihn erheblich lesbarer! Danke!
 
Hallo,
habe mit GetValue die beiden Objekte, ausgelese, funktionert.
Nur wenn ich mit SetValue ein Wert von objQuelle zum objZiel kopiere, funktionert nicht (Zeile 26 & 28)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück