我有一个类Poste
的类实例(我们叫它A
),该实例具有与接口的DataBinding。
我想要做的是复制另一个Poste
类实例的每个属性(我将其称为B
),而不会丢失与我的接口的A
的数据绑定。
我天真地做的事情:
//A already created
Poste B = new Poste();
A = B;
当然它没有用,因为它通过了引用。
此后,我听说了shallow copy
和deep copy
,因此尝试将B
类实例的深层副本复制到A
。
(用于Internet上的深层复制类,正在运行)
A = ObjectExtensions.Copy(B); //making a deep copy of B into A
我认为它将在同一B
实例上复制A
,但是由于未触发INotifyPropertyChanged
,因此数据绑定不再起作用。
有没有一种简单的方法可以复制类的每个字段和属性 而不更改当前实例并丢失数据绑定?
答案 0 :(得分:1)
我想要做的是复制另一个
Poste
类实例的每个属性(我将其称为B
),而不会丢失与我的接口的A
的数据绑定。
然后,您应该设置A
现有实例的每个属性。您可以使用反射来做到这一点:
PropertyInfo[] properties = A.GetType().GetProperties();
foreach (var property in properties)
{
if (property.CanWrite)
property.SetValue(A, property.GetValue(B));
}