1
我在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
耗時太久,慢下來。
有沒有更好的方法來做到這一點?
你控制對象的源代碼嗎?你可以實現一個接口來幫助這個,然後你不需要使用反射。如果你必須能夠爲任意物體做到這一點,反射是你唯一的選擇。 – xxbbcc
我正在考慮這樣做。但是,手動查看每個字段非常耗時,並且稍後可能會導致問題,當我添加其他字段並忘記在克隆方法中提及它們時 –
看看http://stackoverflow.com/questions/5476575/具有更好性能的克隆 – HimBromBeere