У меня есть два объекта, которые содержат некоторые свойства, которые абсолютно одинаковы (одно и то же имя, тип). То, что я хочу сделать, это заполнить идентичные свойства одного объекта свойствами другого объекта. Я пытаюсь сделать это в коде, но это не работает. Свойства объекта Bin не устанавливаются.
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));
}
}
}
Я пытаюсь уйти от простого выполнения:
object1.ItemId = object2.ItemId;
object1.ItemGroup = object2.ItemGroup;
Мне также интересно, есть ли более элегантный способ сделать это?
РЕДАКТИРОВАТЬ: я сократил классы; предназначено, чтобы получить / установить там.
РЕДАКТИРОВАТЬ: изменено на структуру из объекта. По некоторым причинам он не любит устанавливать свойства структуры, когда я делаю это.