反射克隆對象假設這個屬性的對象通過特殊的限制
public int? Prop1 { get; set; }
public string Prop2 { get; set; }
public EntityCollection<X> Prop3 { get; set; }
public EntityCollection<Y> Prop4 { get; set; }
public EntityCollection<Z> Prop5 { get; set; }
我可以複製prop1
和prop2
用這種方法:
public static void SetProperties(PropertyInfo[] fromFields,
object fromRecord,
object toRecord)
{
PropertyInfo fromField;
if (fromFields == null)
{
return;
}
foreach (PropertyInfo t in fromFields)
{
fromField = t;
fromField.SetValue(toRecord,
fromField.GetValue(fromRecord, null),
null);
}
}
,但我不知道怎麼每個複製prop3
,prop4
和prop5
到另一個對象!
編輯: 我應該不Serialize
對象!我做這個工作是因爲我的對象有大數據,而且這個技巧我可以複製一些數據。
有趣的是,如果我說這個問題的原始來源!我使用EF
作爲ORM
並通過WCF
在Silverlight
客戶端中使用數據對象。當我發送List<Foo>
在WCF
,它發送List<Foo>
及其關係數據!和客戶死了!
你關於不使用序列化的觀點在我身上丟失了;如果你想克隆一個大圖(「大數據」),你將有2 *個大圖 - 中間的序列化似乎沒有意義。 – 2010-12-08 07:28:38
@Marc Gravell:只需通過反射將屬性與EntityCollection <>類型複製即可。 – 2010-12-08 10:29:16