Скопируйте каждое поле экземпляра класса в другой экземпляр класса, чтобы сохранить привязку данных - PullRequest
0 голосов
/ 17 мая 2019

У меня есть экземпляр класса моего класса Poste (назовем его A), который имеет привязку данных к моему интерфейсу.

Я хочу скопировать каждое отдельное свойство другого экземпляра класса Poste (я назову его B), не теряя привязку данных A с моим интерфейсом.

Что я сначала наивно сделал:

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

Конечно, это не сработало, потому что прошло ссылки.

После этого я услышал о shallow copy и deep copy, поэтому я попытался сделать полную копию моего экземпляра класса B на A. (использовал класс глубокого копирования в интернете, он работает)

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

Я думал, что он скопирует B на тот же экземпляр A, но привязка данных больше не работает, потому что INotifyPropertyChanged не сработало.

Так есть ли простой способ скопировать каждое поле и свойство класса без изменения текущего экземпляра и потери привязки данных?

1 Ответ

1 голос
/ 17 мая 2019

Я хочу скопировать каждое отдельное свойство другого экземпляра класса Poste (назову его B), не теряя привязку данных A с моим интерфейсом.

Затем вы должны установить каждое свойство существующего экземпляра A. Вы можете сделать это, используя отражение:

PropertyInfo[] properties = A.GetType().GetProperties();
foreach (var property in properties)
{
    if (property.CanWrite)
        property.SetValue(A, property.GetValue(B));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...