【发布时间】:2017-06-04 06:23:46
【问题描述】:
我在课堂上只读过属性
[XmlIgnore]
public string Amount
{
get { return "Some value"; }
}
当我尝试从文件中反序列化对象时,我不希望反序列化抛出异常并且我没有收到对象。我尝试使用 xml 忽略属性,但这对我没有帮助。只有我需要设置文件中存在的属性。
XML 文件
<?xml version="1.0" encoding="utf-8"?>
<Class xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Id>1</KaumeheId>
<PrivaatKey>123</PrivaatKey>
</Class>
类
public class Class
{
public int Id { get; set; }
public string PrivaatKey { get; set; }
public string Amount
{
get { return "Some value"; }
}
}
序列化器
public static class XmlDeserializerService<T>
{
public static void LoadDataToClass(T obj, string filePath)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
{
obj = (T) serializer.Deserialize(fileStream);
}
}
}
附加信息(修改):
如果我在 obj.Amount 下查看调试器,我有 Amount = 'obj.Amount' 抛出了 System.NullReferenceException 类型的异常
【问题讨论】:
-
您是否尝试过XmlAttributeOverrides 类以查看其行为是否有所不同?
-
你的例外是什么?您的示例适用于您的 xml(如果您在 xml 中更正了 Id 标签)
-
XmlIgnoreAttribute 应该可以工作,因为 XML 绝对会忽略 readonly 属性,并且应该只根据 XML 中定义的内容创建对象。关于异常的更多细节会很好。
-
@MaksimSimkin 如果我在 obj.Amount 下查看调试器,我有 Amount = 'obj.Amount' 引发了“System.NullReferenceException”类型的异常
标签: c# .net xml serialization xmlserializer