Legen Sie Objekteigenschaftswerte basierend auf einer anderen Eigenschaftsinstanz fest
Posted: 28 Dec 2024, 15:34
Ich habe zwei Instanzen einer Klasse, in denen ich alle Werte in einer Instanz durch die Werte einer anderen Instanz ersetzen möchte, um die Rückgängig-Funktionalität zu implementieren.
Im folgenden Beispiel _selectedMessage enthält die ursprünglichen Werte und selectedMessage enthält die geänderten Werte, die ich auf die in _selectedMessage enthaltenen Werte zurücksetzen möchte ( ist ein MemberwiseClone() von selectedMessage)
Dies wäre der einfachste Weg, außer dass es nicht funktioniert:
Dies funktioniert, würde aber die Auflistung aller Felder erfordern:
Auf dieser Grundlage versuche ich, die Modelleigenschaften zu durchlaufen, um sie festzulegen, ohne sie alle explizit auflisten zu müssen, außer aus irgendeinem Grund funktioniert es nicht, aber ich denke, es muss nah dran sein.< /p>
Mit der obigen Schleife werden keine Werte zurückgeändert, aber es gibt auch keine Fehler.
Was könnte ich falsch machen?
Im folgenden Beispiel _selectedMessage enthält die ursprünglichen Werte und selectedMessage enthält die geänderten Werte, die ich auf die in _selectedMessage enthaltenen Werte zurücksetzen möchte (
Code: Select all
_selectedMessage
Dies wäre der einfachste Weg, außer dass es nicht funktioniert:
Code: Select all
selectedMessage = _selectedMessage;
Code: Select all
selectedMessage.Subject = _selectedMessage?.Subject;
Code: Select all
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);
}
}
Was könnte ich falsch machen?