如何在运行应用程序时使对象在内存中保持持久性?
我有这样一个对象:
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;}
}
在用多个“Parent”填充“Parents”并且每个都有一个来自xml的多个“Child”之后,我想让它们持久化(仅在内存中),所以我可以从程序的每个部分调用它,而不用需要重新创建它们或将它们从我的代码的一部分发送到另一部分。 我也想用DataSet来做同样的事情。
我意识到“持续性”在这种情况下可能是错误的词,但我不知道如何称呼它,所以请让我知道是否有更好的术语。
你可以创建一个类来保存状态。
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
}
然而,“我可能会从我的程序的每个部分调用它”[...]“暗示你想要管理各种组件与全局状态的依赖关系。
为此,你应该研究依赖注入。
也可以看看:
你可以使用静态属性
http://msdn.microsoft.com/en-us/library/vstudio/98f28cdx.aspx
我建议在这种情况下使用Singleton模式:在整个应用程序中需要一个实例,单例模式提供了这个。
编辑
如果我没有指出Jon Skeet对Singleton模式的非常好的实现,那我会很失落。
上一篇: How do I make an object persistent in memory while application is running?