NopCommerce处理寄存器接口实例

时间:2017-05-11 04:17:49

标签: dependency-injection interface autofac nopcommerce nopcommerce-3.90

我一直在努力让NopCommerce获得注册界面。

这一行

this._connectionService = EngineContext.Current.Resolve<IConnectionService>(); 

导致错误

  

无法解析实例,并且无法从此LifetimeScope创建嵌套生命周期,因为它已经被处理掉了。

我已在DependencyRegistrar

中注册了该界面
builder.RegisterType<ConnectionService>().As<IConnectionService>().InstancePerLifetimeScope();

问题是它在构造函数被调用一次时有效,但是当再次调用构造函数时,接口已被释放,构造函数如下所示 -

public ClientHub()
{
    this._connectionService = EngineContext.Current.Resolve<IConnectionService>();
}

默认NopCommerce已经有很多注册界面,所以我尝试使用看起来像缓存版本的东西

builder.RegisterType<CustomerActivityService>().As<ICustomerActivityService>()
            .WithParameter(ResolvedParameter.ForNamed<ICacheManager>("nop_cache_static"))
            .InstancePerLifetimeScope();

但是在尝试像这样使用ConnectionService时仍然会出错。

我尝试在构建器上使用多种不同的方法,例如

InstancePerHttpRequest();

InstancePerDependency();

但是当第二次调用构造函数时,所有这些都被处理掉了,我确实会向NopCommerce寻求帮助,但没有运气。

任何指导/帮助都会很棒!

enter image description here

1 个答案:

答案 0 :(得分:0)

public ClientHub()
{
    this._connectionService = EngineContext.Current.Resolve<IConnectionService>();
}
好吧,这可能会产生一个问题,你正试图解决依赖问题,但这种情况搞得一团糟 它可能是:

private readonly IConnectionService _connectionService

public ClientHub(IConnectionService connectionService)
{
  this._connectionService = connectionService;
}

或者它可能只是:

private readonly IConnectionService _connectionService = EngineContext.Current.Resolve<IConnectionService>();

而不是构造函数。

相关问题