我有一个类,我希望有一个全局可访问的实例。由于我一直在进行的数据绑定问题,我宁愿不让它静止。我也想避免单身模式。我尝试过使用具有静态属性的IOC容器,但这些也存在数据绑定问题。那么,是否可以在不使用static
的情况下实现全局可访问性?如果是这样,我该如何实施这样的解决方案?
答案 0 :(得分:2)
首先,我建议如果您需要全球可访问的课程,那么您的设计可能存在问题。您应该尽量减少任何应用程序的所有方面的范围,因为这有助于减少耦合。因此,如果可能,您应该考虑重组您的应用程序,以最大限度地减少依赖此类的区域数量。
接下来,除非正在访问的项目没有可变状态或副作用,否则您应该将单例和静态访问标识为要避免的事项。您谈论"数据绑定问题"表明它确实有副作用,所以你在这里走在正确的轨道上。
如果您不打算使用某种定位器模式(例如静态或单例),那么在需要访问的应用程序的各个方面注入值是唯一的方法。您可以在这里查看使用IoC容器,但我不知道它是否会对您的情况有所帮助。在其他类的构造函数中简单地要求您的类的实例会产生DI模型,因此不需要IoC容器来实现DI解决方案。
但我强调了我的第一点:不是寻求一种方法使全局可以访问该类,而是寻求最大限度地减少在整个代码中访问它的需要。
答案 1 :(得分:0)
是肯定的。使用依赖注入。
windsor,Unity,simpleinjector等。
教程: http://msdn.microsoft.com/en-us/library/ff921152.aspx Correctly use dependency injection