我在c#中有一个需要多次快速复制的对象。
目前我正在使用
这样做public static void CopyFieldsInto<T>(T from, T to,bool ommitNulls=false) where T : new()
{
foreach (var f in GetAllFieldsByType<T>())
{
var v = f.GetValue(from);
if (ommitNulls&&v==null)
{
continue;
}
f.SetValue(to, v);
}
}
问题是GetValue
和SetValue
花费的时间太长而且速度慢了。
有更好的方法吗?
答案 0 :(得分:1)
如果您需要使用反射来复制对象的属性,则无法避免使用GetValue
和SetValue
。 Here是另一种类似于你的方法。也可能值得考虑使用AutoMapper或类似的工具。