![]() |
1
2
我通常使用依赖注入,这是选项1。但我通常使用属性来代替使用构造函数参数进行注入。这将清理我的构造函数。我用温莎城堡作为国际奥委会的集装箱。它允许我将安装代码从构造函数移动到一个初始化方法,每当我实现一个IInitializable接口时,在设置所有依赖项之后调用该方法。但我的猜测是,团结也支持类似的事情。 选项2和3不是最佳的。通过调用statics,您可以将代码与它所依赖的类的实现联系起来。注入它们只会将代码与依赖项的接口联系起来。 您确实需要容器对象。但通常只在最高级别。依赖关系等的依赖关系是自动解决的,Castle Windsor这样做了,我很肯定Unity也这样做了。我通常不将IOC容器用于需要在飞行中构建的对象,因此我不需要经常参考较低级别的容器。当我确实需要这样做时,有一些技巧可以让容器将自己注入到依赖它的类中。我要写一篇关于这个的博文。完成后我会通知你的。 |
![]() |
2
2
我将把它们放在您自己设计的接口后面,并调用全局实例。这样,您就不必依赖于那个特定的实现。您可以清楚地定义这些服务正在使用的内容。最后,避免把这些类弄乱。 就像任何事情一样,这是一个判断的召唤。确保你所做的全球化服务是真正的全球化服务。例如,记录器绝对是一个很好的候选者。 |