Legen Sie Objekteigenschaftswerte basierend auf einer anderen Eigenschaftsinstanz festC#

Ein Treffpunkt für C#-Programmierer
Guest
 Legen Sie Objekteigenschaftswerte basierend auf einer anderen Eigenschaftsinstanz fest

Post by Guest »

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 (

Code: Select all

_selectedMessage
ist ein MemberwiseClone() von selectedMessage)
Dies wäre der einfachste Weg, außer dass es nicht funktioniert:

Code: Select all

selectedMessage = _selectedMessage;
Dies funktioniert, würde aber die Auflistung aller Felder erfordern:

Code: Select all

selectedMessage.Subject = _selectedMessage?.Subject;
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>

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);
}
}
Mit der obigen Schleife werden keine Werte zurückgeändert, aber es gibt auch keine Fehler.
Was könnte ich falsch machen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post