我有兩個對象包含一些完全相同(相同名稱,類型)的屬性。我想要做的是用另一個對象的屬性填充一個對象的相同屬性。我試圖在代碼中這樣做,但它不工作。 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;
我也想知道如果有一個更優雅的方式來做到這一點?編輯:我缺乏的班級;意味着在那裏獲得/設置。
編輯:從對象更改爲結構。出於某種原因,當我這樣做時,它不喜歡設置結構的屬性。
既然你編輯的代碼我看不出有什麼明顯的原因爲什麼它是行不通的。您是否使用調試器完成了代碼?它是否返回兩個對象的完整屬性列表?這些名字是完全相同的嗎?它是否達到SetValue代碼行? – 2009-06-11 16:15:04
Doh,我的壞。我認爲他們都是對象,但一個是結構,一個是對象。難怪GetValue/SetValue不起作用! – 2009-06-11 16:24:29