ObjectBuilder依赖项注入和ASP.NET Web Services

本文关键字:NET Web Services ASP 依赖 注入 ObjectBuilder | 更新日期: 2023-09-27 18:28:16

我在web项目中使用Microsoft.Practices.ObjectBuilder来处理依赖项注入(例如,在视图和演示者之间)。

我最近添加了一个ASP.NET Web服务(.asmx)来处理ajax调用。我也想在这里对ObjectBuilder使用依赖项注入,但我无法使其工作。

我试着简单地添加这样的东西:

[CreateNew]
public MyClass MyClass
{
    set
    {
        _myClass = value;
    }
}

但这不起作用。从未调用MyClass的属性setter。有可能做到这一点吗?

ObjectBuilder依赖项注入和ASP.NET Web Services

关于旧的遗留系统,特别是对于那些使用静态-无状态类的系统,我发现这种设计是最合适的:

public MyClass MyClass
{
    get
    {
        if(_myClass == null){ _myClass = new DefaultMyClass(); }
        return _myClass;
    }
    set
    {
        _myClass = value;
    }
}

有了这个,我仍然可以在单元测试中使用setter注入进行依赖注入。

IMyClassUser m = new MyClassUser();
m.MyClass = new MockMyClass();

而在这一点上,并没有对现有代码进行太多的更改。稍后,当时机成熟时,可以使用构造函数DI对其进行修改。

它还将帮助那些不太了解DI的老同事更快地跟踪代码(使用Go to Definition)。即使没有interface/class文档,它也能生存。