Ich habe eine Klasse mit verschiedenen öffentlichen Eigenschaften, die ich Benutzern über ein Eigenschaftenraster bearbeiten kann. Für die Persistenz wird diese Klasse auch über DataContractSerializer zu/von einer XML-Datei serialisiert/deserialisiert.Wie kann ich eine schreibgeschützte Version einer Klasse erstellen?
Manchmal möchte ich Benutzer in der Lage sein, Änderungen, die sie an einer Instanz der Klasse vorgenommen haben, zu speichern (serialisieren). Zu anderen Zeiten möchte ich dem Benutzer nicht erlauben, ihre Änderungen zu speichern und stattdessen alle Eigenschaften im Eigenschaftenraster als schreibgeschützt anzeigen. Ich möchte Benutzern nicht erlauben, Änderungen vorzunehmen, die sie nie später speichern können. Ähnlich wie MS Word es Benutzern ermöglicht, Dokumente zu öffnen, die gerade von jemand anderem geöffnet sind, aber nur als schreibgeschützt.
Meine Klasse verfügt über eine boolesche Eigenschaft, die festlegt, ob die Klasse schreibgeschützt sein soll, aber ist es möglich, diese Eigenschaft zu verwenden, um den Klasseneigenschaften zur Laufzeit dynamisch schreibgeschützte Attribute hinzuzufügen? Wenn nicht, was ist eine alternative Lösung? Sollte ich meine Klasse in eine schreibgeschützte Wrapper-Klasse einbinden?
Danke! Leider funktioniert Option 2 bei mir nicht, da das Eigenschaftsraster eine Reflektion verwendet, um herauszufinden, welche realen Eigenschaften hinter einer Schnittstelle tatsächlich nicht schreibgeschützt sind. Es scheint also, dass Option 3 die beste Antwort für mich ist. Obwohl ich, wie Sie Ihren Vorschlag tue Optionen 2 zu kombinieren und 3. –
Ich kann nicht ausdrücken, wie diese Antwort eine der prägnantesten und vollständig die ich im Internet gefunden. –