在C#中反序列化XML元素存在bool

我正在尝试将Web服务中的一些 XML反序列化为C#POCO.我已经有这个工作,我需要的大部分属性,但是,我需要设置一个bool属性,基于一个元素是否存在,但似乎看不到如何做到这一点?

示例XML片段:

<someThing test="true">
    <someThingElse>1</someThingElse>
    <target/>
</someThing>

一个例子C#类:

[Serializable,XmlRoot("someThing")]
public class Something
{
    [XmlAttribute("test")]
    public bool Test { get; set; }

    [XmlElement("someThingElse")]
    public int Else { get; set; }

    /// <summary>
    /// <c>true</c> if target element is present,/// otherwise,<c>false</c>.
    /// </summary>   
    [XmlElement("target")]
    public bool Target { get; set; }
}

这是我正在处理的实际XML和对象层次结构的一个非常简化的示例,但是演示了我要实现的内容.

我读过的与反序列化空/空元素相关的所有其他问题似乎都涉及使用Nullable< T>,这不会做我所需要的.

有没有人有任何想法?

解决方法

一种方法是使用不同的属性获取元素的值,然后使用Target属性获取该元素是否存在.像这样
[XmlElement("target",IsNullable = true)]
public string TempProperty { get; set; }

[XmlIgnore]
public bool Target
{
    get
    {
        return this.TempProperty != null;
    }
}

即使存在一个空的元素,TempProperty也不会为空,所以如果< target />存在

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...