静态属性注入配置最佳实践

时间:2012-02-10 13:57:26

标签: c# inversion-of-control spring.net

我有多个类使用的辅助组件。这是典型的情况:

public class HelperComponent 
{
    public void HelperMethod() 
    {
        // do something
    }
}

public class MyClass 
{
    private static HelperComponent Helper{ get; set;}

    public void Method1() 
    {
        Helper.HelperMethod();
    }
}

用法:new MyClass().Method1();

我想知道spring.net配置/解决方案的配置是什么? 最初我用这行来获取辅助组件:

ContextRegistry.GetContext().GetObject("HelperComponentName")

然后我读到这不是更好的解决方案,我应该使用注入以避免依赖于spring并具有透明的组件使用。

我的问题是:如何使用弹簧配置实现这一目标?

我可以将静态属性注入类中吗?或者我应该制作Helper实例属性? 如果我将Helper转换为实例属性,是否需要在spring配置中定义MyClass并使用CreateObject来实例化MyClass?
如果是的话,对我来说这不是令人满意的解决方案,因为我想如上所述实例化MyClass。

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

我对spring不熟悉,但在使用IOC容器时,通常会注册所有应用程序的依赖项(及其生命周期),然后解析对象图顶部的“入口点”对象

这允许您利用IOC容器的功能,如构造函数和属性注入。

设置完成后,您可以通过IOC容器配置管理各个对象的生命周期。

在这种情况下,在{I}容器配置中将HelperComponent注册为单身后,我会在MyClass的构造函数中注入HelperComponent