Я хочу создать класс для сериализации. Однако я хочу, чтобы атрибут Order
был явно задан для каждого члена моего класса. Так что я написал этот код:сгенерировать код для xml-сериализации
public void Process(CodeNamespace code, XmlSchema schema)
{
var types = code.Types.Cast<CodeTypeDeclaration>().Where(x => !x.IsEnum);
foreach (var type in types)
{
foreach(var member in type.Members.Cast<CodeTypeMember>().Select((x, i) => new { Item = x, Order = i }))
{
member.Item.CustomAttributes.Add(new CodeAttributeDeclaration("XmlElementAttribute", ???);
}
}
}
Я не знаю, как установить именованный аргумент Order
допустимое значение. Я уже пробовал new[] { Order = member.Order }
, но, видимо, это вообще не работает.
Так что я хочу, это то, что создает этот код:
public class MyClass
{
[XmlElement("MyProp", Order = 0)]
public int Prop1 { get; set; }
}
Вы ищете [добавление атрибутов свойства объекта во время выполнения] (HTTP: // StackOverflow. com/a/602404/3796048) –
@MohitShrivastava Не совсем, я хочу, чтобы атрибуты, добавленные в созданный класс, вместо этого к сериализатору, используя 'XmlOverrides'. Однако, насколько я понял из Marcs Post, я не могу * добавлять * или * изменять * любые атрибуты в * существующем * классе. Однако в моем классе класс пока не существует, он генерируется автоматически во время выполнения. – HimBromBeere