我有一个用DataContractSerializer
. 该类使用没有显式声明的[DataContract]
属性。Namespace
因此,生成的 xml 文件中的命名空间是根据类的命名空间生成的。
该类基本上如下所示:
namespace XYZ
{
[DataContract]
public class Data
{
[DataMember(Order = 1)]
public string Prop1 { get; set; }
[DataMember(Order = 2)]
public int Prop2 { get; set; }
}
}
...以及生成的 xml:
<?xml version="1.0" encoding="utf-8"?>
<Data xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/XYZ">
<Prop1>StringValue</Prop1>
<Prop2>11</Prop2>
</Data>
现在我想通过将[DataContract]
属性更改为[DataContract(Namespace = "")]
. 但是,一旦我这样做了,以前使用原始名称空间序列化的任何文件都不再反序列化。我收到以下异常:
Error in line 1 position XXX. Expecting element 'Data' from namespace ''.. Encountered 'Element' with name 'Data', namespace 'http://schemas.datacontract.org/2004/07/XYZ'.
这很有意义。我更改了命名空间。我没问题。但是,即使名称空间不匹配,似乎也必须有一种方法来告诉DataContractSerializer
继续并反序列化该数据。