【发布时间】:2016-09-29 07:13:28
【问题描述】:
我有一个包含如下 XML 的配置文件:
<XmlParameter Title="Analysis">
<ProcedureName>XmlParameterAnalysisGetFirst</ProcedureName>
<ProcedureGroupId/>
<Returns>Table</Returns>
<Params>
<Param OrderKey="0" Name="xmlParameters">%xmlParameters%</Param>
</Params>
</XmlParameter>
我使用XmlSerializer 类在运行时将文件反序列化为XmlParameter 类型的对象:
public class XmlParameter {
[XmlAttribute]
public string Title { get; set; }
public string ProcedureName { get; set; }
[XmlElement(IsNullable=true)]
public Guid? ProcedureGroupId { get; set; }
public string Returns { get; set; }
public List<XmlCLRParam> Params { get; set; }
}
但是当我尝试用这个代码块反序列化文件时:
var deserializer = new XmlSerializer(typeof(XmlParameter);
var reader = new StreamReader(this.FilePath);
var obj = deserializer.Deserialize(reader);
我收到了System.InvalidOperationException:
XML 文档中的错误。 ---> Sytem.Format.Exception: 未知的 Guid 格式。
我的问题是是否有办法从 XML 文件中反序列化 nullable GUID 值
【问题讨论】:
-
为了简化您的问题,不要使用可为空的 Guid,而是使用 Guid.Empty。这等于 0000-000... 这不是有效的 Guid,因此可以进行检查。
标签: c# xml xmlserializer