1

我有一个遗留系统,它首先从 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>

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

注意:我知道我可以将它们转换为属性并在 setter 方法中执行一些逻辑,但我们谈论的是现实世界中的数百个属性,而不仅仅是我示例中的 3 个,所以我试图避免这种情况有点乏味。

4

0 回答 0