.net XML反序列化 - 跟踪已反序列化的属性

时间:2012-12-19 15:49:23

标签: .net xml-serialization xmlserializer

我有一个遗留系统,首先从XML文件中读取配置类,然后在反序列化之后对生成的对象执行一些其他各种逻辑。

在编写将旧配置文件迁移到新格式的工具时,我正在尝试通过常规序列化过程,但是需要仅跟踪那些已从XML文件反序列化的属性。有没有办法挂钩到XML序列化程序,为每个反序列化的属性触发一些事件?

考虑如下类:

public class UrlPrefs{
    public string LoginUrl = "http://default.com/login";
    public string LogoutUrl = "http://default.com/logout";
    public int MaxFailedLogins = 3;
}

// ...

public UrlPrefs ReadUrlPrefs(string fileName){
    var ser = new XmlSerializer(typeof(UrlPrefs));
    using(var stream = new StreamReader(fileName)){
        UrlPrefs ret = (UrlPrefs)ser.Deserialize(stream);
        return TouchUpPrefsFromDB(ret); // Gets another layer of overrides from the database...
    }
}

以下是有效的UrlPrefs.xml:

<UrlPrefs>
    <LoginUrl>http://customer.com/login</LoginUrl>
    <LogoutUrl>http://customer.com/logout</LogoutUrl
</UrlPrefs>

请注意,未在XML中设置MaxFailedLogins,因此默认为3 所以,我想监视序列化程序,知道LoginUrl和LogoutUrl是唯一被触及的。

注意:我知道我可以将这些转换为属性并在setter方法中做一些逻辑,但我们在谈论现实世界中的数百个属性,而不仅仅是我的示例中的3个属性,所以我正在尝试避免那种单调乏味。

0 个答案:

没有答案