XmlElement игнорируется для виртуального свойства в унаследованном классе - PullRequest
0 голосов
/ 19 мая 2019

Вот так выглядит мой базовый класс

[Serializable]
public class ExternVariableExtension<T>
{
    #region Properties

    [Description("Gets and sets the value of the selected variable")]
    [Category("Data")]
    public virtual T Value { get; set; }

    #endregion
}

Это не абстрактно, потому что я на самом деле использую экземпляры типа ExternVariableExtension<float>, ExternVariableExtension<int>, но мне также нужно ExternVariableExtension<System.Drawing.Color>.

Я заметил, что XmlSerializer испытывает проблемы при попытке сериализации значения System.Drawing.Color. Вот почему я решил создать новый класс, подобный этому

public class ExternColorVariableExtension : ExternVariableExtension<Color>
{
    #region Properties

    [XmlElement(Type = typeof(XmlColor))]
    public override Color Value
    {
        get { return base.Value; }
        set { base.Value = value; }
    }

    #endregion
}

Где у меня есть сериализуемый класс XmlColor вместо System.Drawing.Color one.

Но это не работает. Он действует так, как будто атрибут XmlElement(Type = typeof(XmlColor)) не существует.

...