В следующем примере selectedMessage содержит исходные значения, а selectedMessageTemp содержит измененные значения. Я хочу обновить значения, содержащиеся в selectedMessage, если нажата кнопка сохранения, и сохранить существующую запись, если нажата отмена или операция сохранения базы данных не увенчалась успехом (
Код: Выделить всё
selectedMessageTempЭто был бы самый простой способ, за исключением того, что selectedMessage не обновляется с измененными значениями как и ожидалось:
Код: Выделить всё
selectedMessage = selectedMessageTemp;
Код: Выделить всё
selectedMessage.Subject = selectedMessageTemp?.Subject;
Код: Выделить всё
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);
}
}
Чтобы добавить некоторый контекст того, почему я это делаю, у меня есть Blazor WASM QuickGrid, который показывает список записей:

Тогда, если пользователь открывает запись без Решение, которое я добавил ниже, любые изменения в записи мгновенно отражаются в сетке позади, поэтому, хотя в форме есть кнопки сохранения и отмены, хотя отмена не обновляет базу данных, запись выглядит так, как будто она была изменена в сетке, поэтому мне нужно отменить, чтобы верните его обратно:

Сейчас я клонирую объект в временный, когда открывается форма редактирования, нацеливается на временный объект для формы, а затем, после подтверждения успешного сохранения базы данных удаленного API, устанавливает для основных свойств объекта временные свойства. Таким образом, сетка не изменяется, поэтому для отмены можно просто закрыть форму.
P.S. Я отредактировал свой вопрос, чтобы было понятнее, какой экземпляр temp, добавив temp в конец, так как не знаю, почему за него проголосовали.
Подробнее здесь: https://stackoverflow.com/questions/793 ... y-instance
Мобильная версия