最快的复制对象的方法

时间:2017-05-16 14:49:36

标签: c# reflection clone system.reflection

我在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);
     }
}

问题是GetValueSetValue花费的时间太长而且速度慢了。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

如果您需要使用反射来复制对象的属性,则无法避免使用GetValueSetValueHere是另一种类似于你的方法。也可能值得考虑使用AutoMapper或类似的工具。