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。有可能做到这一点吗?
关于旧的遗留系统,特别是对于那些使用静态-无状态类的系统,我发现这种设计是最合适的:
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
文档,它也能生存。