全く同じ名前(同じ名前、タイプ)のいくつかのプロパティを含む2つのオブジェクトがあります。私がしたいのは、あるオブジェクトの同一のプロパティを別のオブジェクトのプロパティに代入することです。私はコードでこれをやろうとしていますが、動作しません。 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;
これを行うために、よりエレガントな方法があるかどうか、私も思ったんだけど?
編集:私はクラスを省略しました。そこに着いたりセットしたりすることを意味していました。
EDIT:オブジェクトから構造体に変更されました。何らかの理由で、私はこれを行うときに構造体のプロパティを設定するのが好きではありません。
私はそれが動作しない理由は、明らかな理由が表示されていないコードに編集したので。デバッガでコードを踏んだことはありますか?両方のオブジェクトのプロパティの完全なリストを返しますか?場合によっては名前は完全に同じですか?コードのSetValue行に到達することはありますか? –
Doh、悪いです。私はそれらが両方のオブジェクトだと思ったが、一方は構造体であり、もう一方はオブジェクトである。 GetValue/SetValueが機能していないのも不思議ではありません! –