Я работаю над этим ASP. NET Api, где данные получены через GET-запросы, прямо сейчас XML.
, все узлы xml генерируются с использованием кода. элементы (имена классов, имена свойств и т. д. c). Я могу, если я буду sh, использовать такие атрибуты, как [XmlType (TypeName = "DesiredName")], чтобы изменить эти имена узлов, но, тем не менее, это будет сопоставление 1-к-1 с именами, которые я использую в code.
У меня есть определенный c тип объекта, который я хотел бы отформатировать с использованием фактических значений времени выполнения, в отличие от символов времени компиляции.
Вот классы:
public class RootClass
{
public string ID { get; set; }
public List<Property> Properties { get; set; }
}
public class Property
{
public string PropertyType { get; set; }
// Other Fields
}
Допустим, у меня есть пара свойств, у которых есть свойстваTypes "Type1", "Type2", "Type3"
Мой желаемый Xml выглядит следующим образом:
<RootClass>
<ID>23</ID>
<Properties>
<Type1>
<Property>
// Other Fields
</Property>
<Property>
// Other Fields
</Property>
</Type1>
<Type2>
<Property>
// Other Fields
</Property>
</Type2>
</Properties>
</RootType>
Как видите, один из узлов будет назван в зависимости от значений, а не от схемы. Я легко могу выполнить группировку кода при отображении из модели в DTO, и у меня есть полный контроль над классами DTO, поэтому я могу изменить их по своему желанию, чтобы получить ожидаемые значения XML.
Во-первых, это вообще возможно?
Если это так, как должна выглядеть моя структура классов (и атрибуты) для достижения этого (Словари списков? Пользовательские коллекции?)
А если это не так , Какие еще варианты у меня есть, чтобы достичь чего-то максимально приближенного к этому?