我有一个类,我想拥有一个全局可访问的实例。由于我一直遇到的数据绑定问题,我宁愿不让它成为静态的。我也想避免单例模式。我曾尝试使用具有静态属性的 IOC 容器,但这些也存在数据绑定问题。那么,是否有可能在不使用的情况下获得全局可访问性static
?如果是这样,我该如何实施这样的解决方案?
问问题
171 次
2 回答
3
首先,我建议如果您需要一个全局可访问的类,那么您的设计可能有问题。您应该寻求最小化任何应用程序的所有方面的范围,因为这有助于减少耦合。所以如果可能的话,你应该考虑重组你的应用程序,以尽量减少依赖于这个类的区域的数量。
接下来,您将单例和静态访问标识为要避免的事情是正确的,除非正在访问的项目没有可变状态或副作用。您对“数据绑定问题”的讨论表明它确实有副作用,所以您在这里是正确的。
如果您不打算使用某种定位器模式(例如静态或单例),那么在需要访问的应用程序的各个方面注入值是唯一的方法。您可以在这里查看使用 IoC 容器,但我不知道它是否对您的情况有所帮助。只需在其他类的构造函数中要求您的类的实例就会产生 DI 模型,因此不需要 IoC 容器来实现 DI 解决方案。
但我要强调我的第一点:与其寻求一种使类全局可访问的方法,不如寻求在整个代码中尽量减少访问它的需要。
于 2013-11-12T19:49:33.377 回答
0
是的。使用依赖注入。
windsor、Unity、简单注射器等。
教程: http: //msdn.microsoft.com/en-us/library/ff921152.aspx 正确使用依赖注入
于 2013-11-12T18:47:20.410 回答