全局变量访问解决方案思路

时间:2008-11-09 23:16:44

标签: c#

我有一个初始化类,可以将内容预加载到变量(可能是列表或数组)中。这个初始化类只有一个实例,但是会有许多类需要访问预加载的内容。

问题是它们中没有很多是相关的,它们都没有扩展我的初始化类。我考虑了一下,并决定使用静态方法和变量进行此用途。所以像这样......

public class InitClass
{
     static List PreloadedContent;

     static ModelData GetContent(String ContentName)
     {
          //return the preloaded content that matches given name
     }
}

根据情况的要求,预加载的内容可能会在某个时间减小或增加。我遇到过这样的情况,然而这样的事情是唯一体面的解决方案;我认为这是一个丑陋的解决方案。

注意:由于各种原因,我无法在创建数据时将数据加载到需要它的类中 - 其中大多数原因是我不知道但最有可能出现的原因。某些类将根据场景的渲染加载/卸载,而我的InitClass大多数时间都不会处理这些对象的创建。

有人能给我一个更好的解决方案吗?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

为避免静态/全局范围,您可以使用某种Registry类。这意味着您有一个在程序启动时初始化的类。此类包含对需要全局访问的所有其他类的引用。 现在,将注册表类的初始化实例传递给应用程序中的所有实例。 这不是一个非常漂亮的解决方案,但对我来说这是最好的。对于静态和全局变量,我总是在测试或调试代码时遇到一些问题。

另一种方法是使用Singleton。因为它们只是持有静态实例,所以我不喜欢它们。