Используйте имя типа в качестве аргумента атрибута (XmlArray) - PullRequest
0 голосов
/ 12 апреля 2020

Используя XML serializer, я пытаюсь заставить атрибут ArrayItem знать имя обобщенного c типа, чтобы настроить имена элементов Xml и логи c для каждого конкретного типа:

Допустим, у меня есть класс:

public class A<T>
{
    [XmlArray("Resource")]
    [XmlArrayItem(typeof(T).Name)]
    public List<T> ItemsList { get; set; }
}

Этот подход недопустим, учитывая, что аргумент атрибута не может быть значением времени выполнения; typeof(T).Name в этом случае.

Есть ли обходной путь для этой ситуации?

Если нет, можно ли использовать атрибут [XmlArray] в классе A и указать [XmlArrayItem("ThisTypeName")] отдельно в других классах, в которых аргумент может быть жестко закодирован как постоянная строка "ThisTypeName".

...