将一个类实例的每个字段复制到另一个类实例以保持数据绑定

时间:2019-05-17 14:06:55

标签: c# uwp

我有一个类Poste的类实例(我们叫它A),该实例具有与接口的DataBinding。

我想要做的是复制另一个Poste类实例的每个属性(我将其称为B),而不会丢失与我的接口的A的数据绑定。

我天真地做的事情:

//A already created
Poste B = new Poste();
A = B;

当然它没有用,因为它通过了引用。

此后,我听说了shallow copydeep copy,因此尝试将B类实例的深层副本复制到A。 (用于Internet上的深层复制类,正在运行)

A = ObjectExtensions.Copy(B); //making a deep copy of B into A

我认为它将在同一B实例上复制A,但是由于未触发INotifyPropertyChanged,因此数据绑定不再起作用。

有没有一种简单的方法可以复制类的每个字段和属性 而不更改当前实例并丢失数据绑定?

1 个答案:

答案 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));
}