【发布时间】:2011-07-09 21:12:55
【问题描述】:
我慢慢感觉自己的理智在边缘磨损,而我的思绪也在慢慢流失。
我想扩展由于某种原因不支持反序列化通知的 XmlSerializer。
我有以下代码:
public class NotificationXmlSerializer : XmlSerializer
{
public NotificationXmlSerializer(Type type)
: base(type)
{
}
protected override object Deserialize(XmlSerializationReader reader)
{
var x = base.Deserialize(reader);
var methods = x.GetType().GetMethods().Where(method => method.GetCustomAttributes(true).Any(attr => attr is OnDeserializedAttribute));
return x;
}
}
并以这种方式使用它:
using (MemoryStream fs = new MemoryStream())
{
var x = new NotificationXmlSerializer(typeof(int));
x.Serialize(fs, 5);
fs.Seek(0, SeekOrigin.Begin);
var y = x.Deserialize(fs);
}
但是,如果我在我的反序列化覆盖中放置一个断点,它就永远不会被命中!即使我故意在里面抛出异常,程序功能也是正常的,所以我确信它永远不会被命中。
他们为什么要让我重写一个内部方法 Deserialize 而不让我通过它来影响任何东西?
我做错了什么?
最好的问候,马克斯
【问题讨论】:
标签: c# extend xmlserializer