gee*_*ran 4 c# dependency-injection inversion-of-control autofac
在最近的代码审查中,我通过IComponentContext找到了类解析器,如下例所示:
using Autofac;
public class BaseClass
{
protected IComponentContext _componentContext;
public BaseClass(IComponentContext componentContext)
{
_componentContext = componentContext;
}
}
public class MyClass1: BaseClass
{
protected IMyClass2 _myClass2 = _componentContext.Resolve<MyClass2>();
public void Operation1()
{
_myClass2.Operation2();
}
}
Run Code Online (Sandbox Code Playgroud)
我觉得上面的代码是在Class1()构造函数之外解析MyClass2.它不是服务定位器模式和消息IOC吗?
是的,这是使用服务定位器模式的示例.要修复它,你BaseClass应该采取否IComponentContext(确保没有其他服务位置发生),并且MyClass1应该采取类型的构造函数参数IMyClass2.
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |