C#で異なるクラス間のプロパティ値コピー
from https://fox-net.hatenablog.com/entry/2018/02/25/184657
Entityframeworkを使っていると、
ViewModelとDomainModel間で同名のプロパティをコピーしたい!
なんてことよくありますよね。
というわけで、作ってみました。
今回は拡張メソッドにしてみます。
public static class Extention
{
public static void CopyProperty(this object toObject, object fromObject)
{
// コピー元、コピー先のプロパティ情報を取得
PropertyInfo[] fromProperties = fromObject.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
PropertyInfo[] toProperties = toObject.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var fromProperty in fromProperties)
{
// 名前と型が同じプロパティを取得
PropertyInfo target = Array.Find(toProperties, to => to.Name.Equals(fromProperty.Name)
&& to.PropertyType.Equals(fromProperty.PropertyType));
// プロパティ値コピー
if (target != null)
target.SetValue(toObject, fromProperty.GetValue(fromObject));
}
}
}
留言
張貼留言