0

我想有一个枚举属性是可选的。
我想实现这一目标的方法是让它可以为空。

[XmlAttribute(AttributeName = "action")]
public EAction? Action
{
    get;
    set;
}

但这行不通。

以我目前对此事的了解,我可以使用的唯一有效的可为空的 tpye 是字符串。
但是,如果可能的话,我宁愿不使用只用字符串隐藏 Enum 的技巧。

[XmlIgnore]
public EAction? Action
{
    get;
    set;
}

[XmlAttribute(AttributeName = "action")]
public string _Action
{
    get { return this.Action.ToString();
    set { ... }
}

我在问不可能的事吗?

4

1 回答 1

0

我现在不想拥有可为空的属性。

相反,我使用的是 ShouldSerialize 模式(我最近发现了)。
因此,在我的枚举中添加“无”值后,它是这样的:

    [XmlAttribute(AttributeName = "action")]
    public EAction Action
    {
        get;
        set;
    }

    public bool ShouldSerializeAction()
    {
        return this.Action != EAction.None;
    }
于 2013-06-17T15:20:08.550 回答