我有一个类:
class A
{
string name{get;set;}
dynamic values{get;set;} // this can be either ObservableCollection of type string, or MyClass1 or MyClass2
}
我想克隆这个对象。 (可以使用浅层克隆的集合),下面是我现在正在做的事情,有没有更好的方法呢?
public A Clone()
{
A obj = new A();
obj.name = a.name;
if(values is ObservableCollection<string>)
{
obj.values = new ObservableCollection<string>((ObservableCollection<string>)collection);
}
else if(values is ObservableCollection<MyClass1>)
{
obj.values = new ObservableCollection<MyClass1>((ObservableCollection<MyClass1>)collection);
}
else if(values is ObservableCollection<MyClass2>)
{
obj.values = new ObservableCollection<MyClass2>((ObservableCollection<MyClass2>)collection);
}
return obj;
}
答案 0 :(得分:0)
实际上它看起来像我的弱架构,我会尝试将其定义为至少为IEnumerable
,而不是dynamic
。但是内部使用可能没问题。
你可以这样试试:
public A Clone()
{
A obj = new A();
obj.name = name;
obj.values = Activator.CreateInstance(values.GetType(), values);
return obj;
}