gpt4 book ai didi

c# - 在具有 XmlTypeAttribute 的生成类上实现 IXmlSerializable

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:22 26 4
gpt4 key购买 nike

基本上,最初的问题是我需要将 bool 值序列化为 0 或 1。我找到的解决方案是实现 IXmlSerializable,我确实这样做了。不幸的是,我试图序列化的类是从模式生成的代码,并且上面有一个 XmlTypeAttribute。当我尝试使用以通常方式创建的 XmlSerializer (new XmlSerializer(type)) 对对象进行(反)序列化时,它会抛出此异常:

System.InvalidOperationException: Only XmlRoot attribute may be specified for the type ______ 请使用 XmlSchemaProviderAttribute 指定架构类型。

立即想到两个选项:

1) 删除生成代码中的属性。每次重新生成代码时都必须进行此更改。

2) 在创建序列化程序时使用 XmlAttributeOverrides 对象来删除属性。这将要求代码库的其余部分“知道”它需要覆盖该属性。此外,抛出的异常完全没有提供任何关于需要做什么来修复它的线索。

这两种选择都有些糟糕。还有第三种选择吗?

最佳答案

我有同样的问题,对于我删除 IXMLSerializable 作品,我不使用它,你是否试图用属性中的一些逻辑来隐藏 true 或 false?像这样:

private bool mblnFlag;

public String Flag
{
get
{
return mblnFlag;
}
set
{
mblnFlag = (value == "1")
}
}

当然你应该增强属性并做更多的检查,但就是这样。

关于c# - 在具有 XmlTypeAttribute 的生成类上实现 IXmlSerializable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2713870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com