有没有办法在不使用'static'或singleton的情况下创建一个全局可访问的类?

时间:2013-11-12 18:43:39

标签: c#

我有一个类,我希望有一个全局可访问的实例。由于我一直在进行的数据绑定问题,我宁愿不让它静止。我也想避免单身模式。我尝试过使用具有静态属性的IOC容器,但这些也存在数据绑定问题。那么,是否可以在不使用static的情况下实现全局可访问性?如果是这样,我该如何实施这样的解决方案?

2 个答案:

答案 0 :(得分:2)

首先,我建议如果您需要全球可访问的课程,那么您的设计可能存在问题。您应该尽量减少任何应用程序的所有方面的范围,因为这有助于减少耦合。因此,如果可能,您应该考虑重组您的应用程序,以最大限度地减少依赖此类的区域数量。

接下来,除非正在访问的项目没有可变状态或副作用,否则您应该将单例和静态访问标识为要避免的事项。您谈论"数据绑定问题"表明它确实有副作用,所以你在这里走在正确的轨道上。

如果您不打算使用某种定位器模式(例如静态或单例),那么在需要访问的应用程序的各个方面注入值是唯一的方法。您可以在这里查看使用IoC容器,但我不知道它是否会对您的情况有所帮助。在其他类的构造函数中简单地要求您的类的实例会产生DI模型,因此不需要IoC容器来实现DI解决方案。

但我强调了我的第一点:不是寻求一种方法使全局可以访问该类,而是寻求最大限度地减少在整个代码中访问它的需要。

答案 1 :(得分:0)

是肯定的。使用依赖注入。

windsor,Unity,simpleinjector等。

教程: http://msdn.microsoft.com/en-us/library/ff921152.aspx Correctly use dependency injection