Установите значения свойства объекта на основе другого экземпляра свойства для поддержки сохранения и отмены операцийC#

Место общения программистов C#
Ответить
Anonymous
 Установите значения свойства объекта на основе другого экземпляра свойства для поддержки сохранения и отмены операций

Сообщение Anonymous »

У меня есть два экземпляра класса, в котором я хочу заменить все значения в одном экземпляре, значениями другого экземпляра для реализации сохранения или отмены функциональности.
В следующем примере SelectedMessage содержит исходные значения и SelectedMessageTemp содержит модифицированные значения. Я хочу обновить значения, содержащиеся в SelectedMessage , если нажата кнопка «Сохранить», и сохранить существующую запись, если нажата отмена или операция сохранения базы данных не будет успешной (

Код: Выделить всё

selectedMessageTemp
-это memberwiseclone () of SelectedMessage )
Это был бы самый простой способ, кроме SelectedMessage не обновляется с измененными значениями:

Код: Выделить всё

selectedMessage = selectedMessageTemp;
this выполняет работает и вызывает SelectedMessage для обновления с измененными значениями, но включает в себя список каждого поля, которое может быть длинным и подверженным ошибкам:

selectedMessage.Subject = selectedMessageTemp?.Subject;

На основании того факта, что этот второй подход работает, я пытаюсь выполнить итерацию через поля без необходимости явно перечислять каждое свойство, как указано выше, кроме как SelectedMessage не обновляется с измененными значениями, но не возвращаются ошибки.

Код: Выделить всё

PropertyInfo[]? properties = selectedMessageTemp?.GetType().GetProperties();
if (properties != null)
{
foreach (PropertyInfo property in properties)
{
// Get the name and value of each property
string? propertyName = property.Name;
object? propertyValue = property.GetValue(selectedMessageTemp);

selectedMessage?.GetType().GetProperty(propertyName)?.SetValue(selectedMessageTemp, propertyValue);
}
}
Куда я ошибся? Если пользователь открывает запись без решения, которое я добавил ниже любых изменений в записи, мгновенно отражаются в сетке, поэтому в то время как форма содержит и отменяет кнопки, в то время как Cancel не обновляет базу данных, она оставляет запись, которая была изменена в сетке, поэтому мне нужно отменить, чтобы вернуть ее обратно:


Подробнее здесь: https://stackoverflow.com/questions/793 ... rt-save-an
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»