c# - 一个被包装的对象是否有可能到 "become"一个相同类型的对象?

标签 c# xml object wrapper xmldocument

我有一个包装的 XmlDocument 类,在其中,我想检查是否有同名的缓存 XmlDocument 对象,然后“成为”该对象。有更好的方法吗?

namespace myXmlUtilities {
  class SpecificAutoLoadingCmsXmlDocument : System.Xml.XmlDocument {
    private string documentName = "joiseyMike.xml";

    public void loadFromCms() {
        if (cache[documentName] != null) 
            LoadXml(((XmlDocument)cache[documentName]).OuterXml);
        else
            // ... load from the CMS's database.
    }

    public SpecificAutoLoadingCmsXmlDocument() {
        loadFromCms();
    }
  }

已编辑:我使示例更加逼真。为早期的快速版本道歉。

最佳答案

您应该改用工厂模式,这样您就可以将此逻辑放入工厂方法中。

所以你最终会得到:

public static XmlDocument GetNewDocument(string documentName) {
    if (cache[documentName] != null) 
        return cache[documentName];
    else
        return new XmlDocument();
}

因此,您无需执行简单的 new XmlDocument();,而是调用静态 GetNewDocument() 方法。

关于c# - 一个被包装的对象是否有可能到 "become"一个相同类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4672967/

相关文章:

c# - 在 C# 中不使用循环更改数据表列中的 DATETIME 格式

xml - 需要有关 namespace 的 xslt 转换的帮助

c# - 关于界面组织 Visual Studio 项目的最佳实践是什么?

c# - 出错时转到 ErrHand(C#)

java - 使用 Java 中的合并算法将两个值合并为单个值

javascript - 对象和原始类型相等

javascript - 用 javascript 对象替换字符串值

java - 如何从列表 <object> 中删除重复项

c# - 令人困惑的线程行为

android - 卡在 Android 中的 XmlPullParser