В следующем примере _selectedMessage содержит исходные значения, а selectedMessage содержит измененные значения, которые я хочу вернуть к значениям, содержащимся в _selectedMessage (
Код: Выделить всё
_selectedMessageЭто был бы самый простой способ, но он не работает:
Код: Выделить всё
selectedMessage = _selectedMessage;
Код: Выделить всё
selectedMessage.Subject = _selectedMessage?.Subject;
Код: Выделить всё
PropertyInfo[]? properties = _selectedMessage?.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(selectedMessage);
selectedMessage?.GetType().GetProperty(propertyName)?.SetValue(selectedMessage, propertyValue);
}
}
Где я могу ошибиться?Чтобы добавить некоторый контекст того, почему я это делаю, у меня есть Blazor WASM QuickGrid, который показывает список записей:

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

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