我想克隆一個對象到另一個對象,但從原始對象中排除一個屬性。例如,如果對象A具有Name,Salary,Location,那麼如果我排除了Location屬性,克隆對象應該只有Name和salary屬性。謝謝。將對象克隆到另一個對象,但排除某些屬性?
0
A
回答
0
下面是我用來做一個擴展方法:
public static T CloneExcept<T, S>(this T target, S source, string[] propertyNames)
{
if (source == null)
{
return target;
}
Type sourceType = typeof(S);
Type targetType = typeof(T);
BindingFlags flags = BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance;
PropertyInfo[] properties = sourceType.GetProperties();
foreach (PropertyInfo sPI in properties)
{
if (!propertyNames.Contains(sPI.Name))
{
PropertyInfo tPI = targetType.GetProperty(sPI.Name, flags);
if (tPI != null && tPI.PropertyType.IsAssignableFrom(sPI.PropertyType))
{
tPI.SetValue(target, sPI.GetValue(source, null), null);
}
}
}
return target;
}
您可能還檢查出Automapper。
這裏是我如何使用擴展的一個例子。
var skipProperties = new[] { "Id", "DataSession_Id", "CoverNumber", "CusCode", "BoundAttempted", "BoundSuccess", "DataSession", "DataSessions","Carriers" };
DataSession.Quote = new Quote().CloneExcept(lastSession.Quote, skipProperties);
由於這是作爲擴展方法實現的,因此它會修改調用對象併爲了方便而返回它。這是在[question]中討論的:Best way to clone properties of disparate objects
0
如果您在談論java,那麼您可以嘗試使用「transient」關鍵字。至少這適用於序列化。
相關問題
- 1. 將對象複製到另一個對象,但刪除了某些屬性Windows Phone 8
- 2. Linq選擇某些屬性到另一個對象?
- 3. 克隆一個對象
- 4. 將對象動態添加到另一個對象的屬性
- 5. 過濾器和克隆對象屬性
- 6. 克隆對象
- 7. 克隆除每個鍵的給定屬性以外的對象
- 8. 克隆對象只有一些參數
- 9. NSMutableArray刪除對象正在克隆數組中的另一個對象
- 10. 如何將對象的屬性綁定到另一個對象的屬性? (C#)
- 11. 根據某些屬性將對象與現有對象關聯
- 12. 如何從ASP.NET中的對象中排除某些屬性WebApi
- 13. Java擴展一個對象,除了父母的某些屬性
- 14. fabricJS - 選擇多個對象克隆對象到另一個畫布出錯
- 15. 使用Linq,按某些屬性排序對象並選擇前2個對象
- 16. 克隆對象到$這
- 17. Rails的:返回克隆的對象加上多一個屬性
- 18. 克隆整個對象圖
- 19. mongodb:將數組屬性從一個對象複製到另一個對象
- 20. Groovy - 將屬性從一個對象綁定到另一個對象
- 21. 克隆Java對象
- 22. PHP - 對象克隆
- 23. 克隆dom.Document對象
- 24. 深克隆對象
- 25. 使用反射覆制對象屬性到另一個對象
- 26. 將事件與對象一起克隆?
- 27. 無法確定某個對象的某個屬性是否大於該對象的另一個屬性
- 28. 如何將JavaScript對象從PascalCase屬性克隆到camelCase屬性(JavaScript中)?
- 29. 從另一個對象分配一個對象屬性
- 30. 將對象屬性初始化爲DataGridView中另一個對象屬性的值
不,我正在使用C#。 – user282807 2012-02-17 01:30:55
@ user282807下一次爲該問題設置適當的語言標記(如果語言特定的話) - 可以節省解析不相關的答案和其他寫入的問題;-)幸運的是,好的社區成員這次已經爲您添加了該標記 – mbx 2018-01-23 12:35:43