当在Web应用程序中使用Unity 2.0进行依赖项注入时,似乎用户控件,页面等都需要进行显式调用以检索容器并“获取”依赖项...因此使用{{1}之类的注释不会提供任何价值。这可能是因为Web配置中未知容器的位置(应用程序上下文,http上下文缓存等)。
由于Unity本身提供了方法拦截,因此在构建自己的Web应用程序时,是否有办法“告诉”统一如何正确获取容器?而不是必须为页面等创建基类?
答案 0 :(得分:1)
问题是WebForms页面和控件没有设置为允许依赖注入构造,因此除非类调用Unity本身,否则Unity永远不会被调用。我发现在这些情况下最好的模式是通过服务定位器在构造函数中调用DI框架,然后使用注释来标记依赖项属性。像这样:
public MyPage()
{
// Injector is a wrapper class so you can change the underlying DI framework
// later if necessary.
Injector.Inject(this);
}
[Dependency]
public SomeService MyService {get;set;}