Как сказать XmlSerializer всегда сериализовать свойства с [DefautValue (…)]?

я используюDefaultValue атрибут для правильногоPropertyGrid поведение (оно показывает значения, отличающиеся от значения по умолчанию, выделенного жирным шрифтом) Теперь, если я хочу сериализовать показанный объект с использованиемXmlSerializer не будет записей в xml-файле для свойств со значениями по умолчанию.

Какой самый простой способ сказать XmlSerializer все еще сериализовать их?

Мне нужно это поддержатьверсии», поэтому, когда я позже изменяю значение по умолчанию в коде, свойство serialized получает значение, с которым оно сериализовано, а не "самый последний" один. Я могу думать о следующем:

Переопределить поведениеPropertyGrid (используйте пользовательский атрибут, поэтому он будет игнорироватьсяXmlSerializer);Сделайте что-то вроде пользовательской xml-сериализации, где игнорируйте 'DefaultValues;Сделайте что-нибудь с объектом, прежде чем передать егоXmlSeriazer так что победилт содержатDefaultValueбольше

Но есть шанс, что мне не хватает какой-то секретной собственности, что позволяет делать это без особой боли = D.

Вот пример того, что я хочу:

    private bool _allowNegative = false;
    /// 
    /// Get or set if negative results are allowed
    /// 
    [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

Если я раскомментирую (* 1), то получу желаемый эффект вPropertyGrid - свойства со значениями по умолчанию отображаются в обычном тексте, в противном случае текст выделяется жирным шрифтом. тем не мениеXmlSerializer будутНЕ положить свойства со значением по умолчанию в XML-файл, и этоПЛОХОЙ (и я пытаюсь это исправить).

Если я раскомментирую (* 2) и (* 3), тогдаполностью такой же, как и комментарий (* 1).

Если я раскомментирую (* 2) и (* 4), тоXmlSerializer всегда помещает свойства в xml-файл, но это происходит потому, что онибольше не имеют значения по умолчанию а такжеPropertyGrid показывает все значения жирным шрифтом

Ответы на вопрос(4)

Ваш ответ на вопрос