我有各种不同对象类型的ObservableCollections.我想编写一个方法来获取任何这些对象类型的集合,并返回一个新集合,其中每个元素都是给定集合中元素的深层副本.以下是特定类的示例
private static ObservableCollection<PropertyValueRow> DeepCopy(ObservableCollection<PropertyValueRow> list)
{
ObservableCollection<PropertyValueRow> newList = new ObservableCollection<PropertyValueRow>();
foreach (PropertyValueRow rec in list)
{
newList.Add((PropertyValueRow)rec.Clone());
}
return newList;
}
Run Code Online (Sandbox Code Playgroud)
如何为任何实现ICloneable的类使这个方法通用?
Jon*_*eet 25
你可以这样做:
private static ObservableCollection<T> DeepCopy<T>(ObservableCollection<T> list)
where T : ICloneable
{
ObservableCollection<T> newList = new ObservableCollection<T>();
foreach (T rec in list)
{
newList.Add((T)rec.Clone());
}
return newList;
}
Run Code Online (Sandbox Code Playgroud)
请注意,通过采用可以使这更通用IEnumerable<T>,LINQ使它更容易:
private static ObservableCollection<T> DeepCopy<T>(IEnumerable<T> list)
where T : ICloneable
{
return new ObservableCollection<T>(list.Select(x => x.Clone()).Cast<T>());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17759 次 |
| 最近记录: |