Ich habe zwei Objekte, die einige Eigenschaften enthalten, die genau identisch sind (gleicher Name, Typ). Ich möchte die identischen Eigenschaften eines Objekts mit den Eigenschaften eines anderen Objekts füllen. Ich versuche das im Code zu tun, aber es funktioniert nicht. Die Eigenschaften des Bin-Objekts werden nicht festgelegt.Legen Sie ähnliche Objekteigenschaften in einem anderen Objekt
class Basket{
public Basket(int itemId, int itemGroup){
ItemId=itemId;
ItemGroup=itemGroup;
}
private int _itemId;
private int _itemGroup;
public int ItemId{ get{return _itemId;} set{_itemId = value};}
public int ItemGroup{ get{return _itemGroup;} set{_itemGroup = value};}
}
struct Bin{
public string Name;
private int _itemId;
private int _itemGroup;
public int ItemId{ get{return _itemId;} set{_itemId = value};}
public int ItemGroup{ get{return _itemGroup;} set{_itemGroup = value};}
public bool IsEmpty;
}
Basket basket = new Basket(1,1);
Bin bin = new Bin();
PropertyInfo[] basketPI = basket.GetType().GetProperties();
PropertyInfo[] binPI = bin.GetType().GetProperties();
foreach(PropertyInfo biPI in binPI){
foreach(PropertyInfo baPI in basketPI){
if(baPI.Name==biPI.Name){
biPI.SetValue(bin,baPI.GetValue(basket,null),null));
}
}
}
Ich versuche, weg von einfach tun:
object1.ItemId = object2.ItemId;
object1.ItemGroup = object2.ItemGroup;
Ich frage mich auch, wenn es eine elegantere Weg ist, dies zu tun?
EDIT: Ich unterdrückte die Klassen; dazu bestimmt, dass man dort hinein-/hinausgeht.
EDIT: Von Objekt zu Struct geändert. Aus irgendeinem Grund mag es nicht, die Eigenschaften der Struktur zu setzen, wenn ich dies tue.
Da Sie Code bearbeitet habe ich keinen offensichtlichen Grund, warum es nicht funktionieren würde. Bist du mit einem Debugger durch den Code gegangen? Gibt es eine vollständige Liste der Eigenschaften für beide Objekte zurück? Sind die Namen im Fall vollkommen identisch? Erreicht es jemals die SetValue-Codezeile? –
Doh, mein Schlechter. Ich dachte, sie wären beide Objekte, aber einer ist eine Struktur und einer ist ein Objekt. Kein Wunder, dass der GetValue/SetValue nicht funktionierte! –