В следующем примере SelectedMessage содержит исходные значения и SelectedMessageTemp содержит модифицированные значения. Я хочу обновить значения, содержащиеся в SelectedMessage , если нажата кнопка «Сохранить», и сохранить существующую запись, если нажата отмена или операция сохранения базы данных не будет успешной (
Код: Выделить всё
selectedMessageTempЭто был бы самый простой способ, кроме SelectedMessage не обновляется с измененными значениями:
Код: Выделить всё
selectedMessage = selectedMessageTemp;
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);
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... rt-save-an
Мобильная версия