[C#]異なるオブジェクトのパブリックプロパティをまるっとコピーする

超まとめ

オブジェクトfromのパブリックプロパティ値を、オブジェクトtoの同名プロパティにコピーするコードです。
データオブジェクト間のデータコピーとかで便利、かも。

public void copyProp(Object from, Object to)
{
    var fromPropInfos = from.GetType().GetProperties();
    var toPropInfos = to.GetType().GetProperties();
    foreach (var toPropInfo in toPropInfos)
    {
        var fromPropInfo = fromPropInfos
            .Where((prop) =>
                prop.Name == toPropInfo.Name
                 &&
                prop.PropertyType == toPropInfo.PropertyType)
            .SingleOrDefault();
        if (fromPropInfo != null)
        {
            var fromValue = fromPropInfo.GetValue(from, null);
            toPropInfo.SetValue(to, fromValue, null);
        }
    }
}


Posted in C#

コメントを残す