XmlConvert 和可为空的结果?
Posted
技术标签:
【中文标题】XmlConvert 和可为空的结果?【英文标题】:XmlConvert and nullable results? 【发布时间】:2010-10-22 00:33:52 【问题描述】:在我的项目中,我收到一个 XmlElement,我必须将其中的一些属性解析回一个类。
为了映射这些,我使用 XmlConvert 类。但是源是 XML,通常有空节点或不可读的节点。与其抛出一堆错误,我想将一个 NULL 返回存储在我的班级中。
我开始制作一个 XmlConvertExtentions 类,它按照以下精神做事:
public static class XmlConvertExtentions
public static int? ToNullableInt32 (this XmlConvert c, string s)
try return XmlConvert.ToInt32(s);
catch return null;
我坚信我不是第一个需要这种功能的开发人员,我想知道我是不是又在发明另一个***。 此外,我觉得我正在发明一个非常丑陋的***。 try catch 感觉很糟糕。有没有更好的办法?
--编辑-- 现在我也注意到它甚至不起作用:P 我认为这是因为您不能扩展静态类。
【问题讨论】:
【参考方案1】:如果节点为null或空,s
是什么?
怎么样:
if(string.IsNullOrEmpty(s)) return null;
return XmlConvert.ToInt32(s);
另请注意,LINQ-to-XML 对这些转换的处理更加优雅(通过强制转换)。
【讨论】:
【参考方案2】:我不知道在您的情况/情况下是否有可能,但您是否已经使用 XML 序列化类,并通过 XmlSerializer 类将 XML 反序列化为您的自定义类的实例,而不是这样做全部手动?
【讨论】:
是的,我有。但是因为输入可以是多种格式并且必须完成一些自定义逻辑,所以标准序列化不起作用。除此之外,我从来没有开箱即用的序列化工作。实在是太有限了。以上是关于XmlConvert 和可为空的结果?的主要内容,如果未能解决你的问题,请参考以下文章
将 XDocument.Descendants 与合并运算符一起使用??和可为空的类型