0

我有一个这样的对象:

public class Parents
{
    public List<Parent> {get; set;}
}
public class Parent
{
    public string name {get; set;}
    public int age {get; set;}
    public List<Child> {get; set;}
}
public class Child
{
    public string name {get; set;}
    public int age {get; set;}
}

在用多个“父级”填充“父级”并且每个“父级”从 xml 中填充多个“子级”之后,我想让它们持久化(仅在内存中),所以我可以从程序的每个部分调用它,而不需要需要重新创建它们或将它们从我的代码的一部分发送到另一部分。我也想用 DataSet 做同样的事情。

我知道“持久”在这种情况下可能是错误的词,但我不知道如何称呼它,所以如果有更好的术语,请告诉我。

4

3 回答 3

4

您可以创建一个类来保存状态。

public static class GlobalConfiguration
{
    public Parents Parents { get; set; }
}

如果您打算容纳许多对象,则更通用:

public static class GlobalConfiguration
{
    static GlobalConfiguration()
    {
        Objects = new Dictionary<string, object>();
    }

    public readonly IDictionary<string, object> Objects { get; set; }
}

用法:

object parentsObject;

if(GlobalConfiguration.Objects.TryGetValue("Parents", out parentsObject))
{
    var parents = parentsObject as Parents;
    // use parents
}

但是,“我可能会从程序的每个部分调用它[...]”暗示您需要一些东西来管理各种组件与全局状态的依赖关系。

为此,您应该研究依赖注入

也可以看看:

于 2013-11-12T13:52:06.700 回答
0

您可以使用静态属性

http://msdn.microsoft.com/en-us/library/vstudio/98f28cdx.aspx

于 2013-11-12T13:49:45.463 回答
0

我建议在这种情况下使用单例模式:您希望在整个应用程序中都有一个这样的实例,而单例模式正好提供了这一点。

编辑
如果我没有指出 Jon Skeet对 Singleton 模式的非常好的实现,那我就失职了。

于 2013-11-12T13:50:58.733 回答