[英]generate code for xml-serialization
我想创建一个要序列化的类。 但是我希望在类中的每个成员上显式设置Order
属性。 所以我写了这段代码:
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 }
但是显然这new[] { Order = member.Order }
不起作用。
所以我想要创建此代码的东西:
public class MyClass
{
[XmlElement("MyProp", Order = 0)]
public int Prop1 { get; set; }
}
解决方案非常简单。 我比较了过程XmlElement
已自动添加,并注意到,该属性名称不-attributes XmlElementAttribute
但System.Xml.Serialization.XmlElementAttribute
。 此外-由于Order
参数是XmlElementAttribute
CodeAttributeArgument
的参数,我们必须将其添加为CodeAttributeArgument
:
var attr = new CodeAttributeDeclaration("System.Xml.Serialization.XmlElementAttribute");
attr.Arguments.Add(new CodeAttributeArgument("Order", new CodePrimitiveExpression(member.Order)));
member.Item.CustomAttributes.Add(attr);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.