¿Cómo decirle a XmlSerializer que serialice las propiedades con [DefautValue (...)] siempre?

estoy usandoDefaultValue atributo para el adecuadoPropertyGrid Comportamiento (muestra valores diferentes de los predeterminados en negrita). Ahora si quiero serializar el objeto mostrado con el uso deXmlSerializer no habrá entradas en el archivo xml para las propiedades con valores predeterminados.

¿Cuál es la manera más fácil de decirle a XmlSerializer que serialice esto todavía?

Necesito eso para admitir "versiones", por lo que cuando cambio el valor predeterminado más adelante en el código, la propiedad serializada obtiene el valor con el que se serializó, no la "más reciente". Puedo pensar en lo siguiente:

Anular el comportamiento dePropertyGrid (use el atributo personalizado, por lo que será ignorado porXmlSerializer);Haga una especie de serialización xml personalizada, donde ignoreDefaultValue's;Hacer algo con objeto antes de pasárselo.XmlSeriazer por lo que no contendráDefaultValuees más

Pero existe la posibilidad de que pierda alguna propiedad secreta que me permita hacerlo sin mucho dolor = D.

Aquí hay un ejemplo de lo que quiero:

    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

Si elimino el comentario (* 1), entonces he deseado efecto enPropertyGrid - las propiedades con valores predeterminados se muestran en texto normal, de lo contrario el texto está en negrita. sin embargoXmlSerializer seráNO poner las propiedades con valor predeterminado en el archivo xml y esto esMALO (y estoy tratando de arreglarlo).

Si elimino el comentario (* 2) y (* 3), entonces es totalmente igual a descomentar (* 1).

Si descomento (* 2) y (* 4), entoncesXmlSerializer siempre pondrá las propiedades en el archivo xml, pero esto sucede porqueya no tiene valor por defecto yPropertyGrid Muestra todos los valores en negrita.

Respuestas a la pregunta(4)

Su respuesta a la pregunta