Я медленно чувствую, как мое здравомыслие изнашивается по краям, пока мой разум медленно истощается.
Я хочу расширить 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, не позволяя мне что-либо повлиять на него?
Что я делаю не так?
С уважением, Макс