Wie kann ich XmlSerializer anweisen, Eigenschaften immer mit [DefautValue (…)] zu serialisieren?

ich benutzeDefaultValue Attribut für das RichtigePropertyGrid Verhalten (Werte, die vom Standard abweichen, sind fett gedruckt). Nun, wenn ich das gezeigte Objekt mit Hilfe von serialisieren möchteXmlSerializer Es gibt keine Einträge in der XML-Datei für Eigenschaften mit Standardwerten.

Wie kann XmlSerializer am einfachsten angewiesen werden, diese noch zu serialisieren?

Ich brauche das, um "Versionen" zu unterstützen. Wenn ich also den Standardwert später im Code ändere, erhält die serialisierte Eigenschaft den Wert, mit dem sie serialisiert wurde, nicht die "neueste". Ich kann über folgendes nachdenken:

Überschreibe das Verhalten vonPropertyGrid (Verwenden Sie ein benutzerdefiniertes Attribut, damit es von ignoriert wirdXmlSerializer);Führen Sie eine benutzerdefinierte XML-Serialisierung durch, bei der Sie ignorierenDefaultValue's;Machen Sie etwas mit dem Objekt, bevor Sie es weitergebenXmlSeriazer so wird es nicht enthaltenDefaultValueist nicht mehr.

Aber es besteht die Möglichkeit, dass ich eine geheime Eigenschaft vermisse, die es mir erlaubt, sie ohne große Schmerzen auszuführen = D.

Hier ist ein Beispiel für das, was ich will:

    private bool _allowNegative = false;
    /// <summary>
    /// Get or set if negative results are allowed
    /// </summary>
    [Category(CategoryAnalyse)]
    [Admin]
    [TypeConverter(typeof(ConverterBoolOnOff))]
    //[DefaultValue(false)] *1
    public bool AllowNegative
    {
        get { return _allowNegative; }
        set
        {
            _allowNegative = value;
            ConfigBase.OnConfigChanged();
        }
    }
    //public void ResetAllowNegative() { _allowNegative = false; } *2
    //public bool ShouldSerializeAllowNegative() { return _allowNegative; } *3
    //public bool ShouldSerializeAllowNegative() { return true; } *4

Wenn ich (* 1) auskommentiere, habe ich den gewünschten Effekt inPropertyGrid - Eigenschaften mit Standardwerten werden im normalen Text angezeigt, ansonsten ist der Text fett. jedochXmlSerializer werdenNICHT setze die Eigenschaften mit dem Standardwert in die xml-Datei und das istSCHLECHT (und ich versuche es zu beheben).

Wenn ich die Kommentare (* 2) und (* 3) auskommentiere, ist dies genau das Gleiche wie das Auskommentieren (* 1).

Wenn ich (* 2) und (* 4) auskommentiere, dannXmlSerializer Stellt immer Eigenschaften in die XML-Datei, aber das passiert, weil siehabe keinen Standardwert mehr undPropertyGrid Zeigt alle Werte in Fettdruck an.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage