繁体   English   中英

是Autofac IComponentContext.Resolve <Type>服务定位器模式

[英]Is Autofac IComponentContext.Resolve<Type> a service locator pattern

在最近的代码审查中,我通过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();
   }
}

我觉得上面的代码是在Class1()构造函数之外解析MyClass2。 它不是服务定位器模式和消息IOC吗?

是的,这是使用服务定位器模式的示例。 要修复它,你的BaseClass不应该没有IComponentContext (以确保没有其他服务位置发生), MyClass1应该采用类型为IMyClass2的构造函数参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM