Установите параметр атрибута, используя статическое поле - PullRequest
0 голосов
/ 14 сентября 2018

Предположим, у нас есть следующая структура:

открытый абстрактный класс SpecialProduct {}

public class ProductY : SpecialProduct 
{
    public static String ProductKey
    {
        get 
        {
            return "CBA654321";
        }
    }
}

public class ProductX : SpecialProduct 
{
    public static String ProductKey 
    {
        get 
        {
            return "ABC123456";
        }
    }
}

У меня есть другой класс, который используется для десериализации XML-файла. Класс свойства связан с атрибутом XmlElement, и элемент может быть идентифицирован с различными описаниями (хэш-кодами).

public class StatusSpecialProducts : IStatusSpecialProducts
    {

        [XmlElement("ABC123456", typeof(ProductX))]
        [XmlElement("CBA654321", typeof(ProductY))]
        public List<SpecialProduct> products { get; set; }

    }

Я хочу избежать дублирования кода продукта в разных местах. Есть ли способ установить параметр "elementName" атрибута XmlElement со статическим полем, установленным для классов, показанных ранее? Как это:

public class StatusSpecialProducts : IStatusSpecialProducts
    {

        [XmlElement(ProductX.ProductKey, typeof(ProductX))]
        [XmlElement(ProductY.ProductKey, typeof(ProductY))]
        public List<SpecialProduct> products { get; set; }

    }

Есть способ сделать это?

...