【发布时间】:2021-11-24 21:41:44
【问题描述】:
我正在尝试序列化包含同一对象的两个列表的对象。
public class Foo
{
public List<ClassA> DataA {get;set;}
public List<ClassA> DataB {get;set;}
}
public class ClassA
{
public string Code {get;set;}
public string Value {get;set;}
}
在 xml 文件中,我希望类的属性具有不同的名称。像这样:
<Foo>
<DataA>
<ClassA>
<Code></Code>
<Value></Value>
</ClassA>
</DataA>
<DataB>
<ClassA>
<Name></Name>
<Text></Text>
</ClassA>
</DataB>
</Foo>
我尝试使用“XmlAttributeOverrides”,但属性名称已针对所有实例进行了修改,而不仅仅是一个。
有没有办法做到这一点?也许是自定义 XmlSerializer ?
谢谢
【问题讨论】:
-
使用不同的类?显然,他们不应该概括一些东西。
-
只是在黑暗中拍摄,您不要关闭
<DataA>和<DataB>properly。这也在你的本地代码中吗? -
@dba :不,这只是这篇文章中的一个错误;)
-
@Fildor :它是一个泛型类,只有 2 个我用于不同目的的属性。在我的示例中,我有 2 个列表,但我可以有 5、6 或更多。所以,如果可能的话,我不希望每次都创建一个新类而只创建一个。
-
嗯,通用模型创建通用 XML ...现在您可以做一些花哨的代码魔术,可能使用注释/属性,或者您序列化通用并运行重命名标签的后期制作 XSLT ... 总而言之,我个人会选择一个不错的模型。但如果这不是你的选择,那么你可能不得不接受这些警告。
标签: c# xml serialization