首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将枚举序列化/反序列化为元素名称(而不是元素内容/值)

将枚举序列化/反序列化为元素名称(而不是元素内容/值)
EN

Stack Overflow用户
提问于 2013-11-14 19:54:52
回答 1查看 586关注 0票数 0

我需要反序列化/序列化XML,如下所示:

代码语言:javascript
复制
<color>
    <green/>
</color>

其中<green/>可能是<red/><blue/>等-非常大(但有限)集。

我想在我的代码中把它描述为简单的枚举:

代码语言:javascript
复制
enum ColorName
{
    [XmlEnum("red")]
    Red,
    [XmlEnum("green")]
    Green,
    [XmlEnum("blue")]
    Blue,

    ...
    etc.
}

但是,如果我这样写我的对象模型:

代码语言:javascript
复制
class Color
{
    [XmlElement("name")]
    public ColorName ColorName;
}

class Something
{
    [XmlElement("color")]
    public Color Color;
}

枚举作为值而不是元素名称进入XML:

代码语言:javascript
复制
<color>
    <name>green</name>
</color>

是否有任何方法获得写入XML元素名称的枚举值(请参阅第一个XML片段--这是目标),而不是XML元素值,而不必将所有值(非常大的集合)重新键入为空类名,或者诉诸自定义序列化(我想避免它,因为序列化类包含许多其他成员,默认情况下是完全序列化的)?

(我不能更改架构,它是第三方的)。

EN

回答 1

Stack Overflow用户

发布于 2013-11-14 20:04:44

不,这不是通过简单地用[Xml*]属性装饰类来支持的。您必须在IXmlSerializable上实现Something并自己实现。注意,在大多数情况下,您不必费心使用GetSchema方法;实现ReadXmlWriteXml是很好的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19987094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档