Предположим, у нас есть следующая структура:
открытый абстрактный класс 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; }
}
Есть способ сделать это?