Dependency injection 范围在温莎城堡类型工厂中丢失?

Dependency injection 范围在温莎城堡类型工厂中丢失?,dependency-injection,castle-windsor,typed-factory-facility,Dependency Injection,Castle Windsor,Typed Factory Facility,我在一个带有TypedFactoryFacility的容器中有以下温莎组件注册码: Component .For<IMyItemFactory>() .AsFactory(f => f.SelectedWith(new MyComponentSelector())) .LifestylePerWcfOperation(), Classes .FromAssembly(Assembly.GetExecutingAssembly()) .B

我在一个带有TypedFactoryFacility的容器中有以下温莎组件注册码:

Component
    .For<IMyItemFactory>()
    .AsFactory(f => f.SelectedWith(new MyComponentSelector()))
    .LifestylePerWcfOperation(),

Classes
    .FromAssembly(Assembly.GetExecutingAssembly())
    .BasedOn<IMyItem>()
    .LifestylePerWcfOperation()
    .Configure(c => c.Named(c.Implementation.Name)),
这很令人困惑,因为应用程序中几乎每个组件都有wcfooperation作用域,所以我不明白这是如何发生的。我甚至尝试记录每个注册的类型及其作用域,以断言IMyItem类具有wcfooperation作用域,而且它们具有

你知道如何调试这个吗

编辑:我正在从成功构造的对象调用工厂,该对象具有wcfooperation作用域,调用另一个wcfooperation作用域服务时不会出现问题:

public SomeDataProvider(IElasticsearchClient elasticClient, IMyItemFactory factory)
{
    _elasticClient = elasticClient;

    _factory = factory;
}

async Task SomeMethod()
{
    var someString = await _elasticClient.SomeMethod(); // ok

    var myItem = _factory.GetMyItem(someString); // exception from above

    // ...
}

正如评论
操作上下文中提到的。当前的
null
,因此从技术上讲,温莎做了正确的事情-提醒您注意这一事实。

您在哪里以及如何使用该工厂?我添加了使用说明。我想这个问题很难从远处回答——如果有一个答案能教会我如何调试这种情况,我会感到满意。正如我已经写过的,我唯一的想法是使用
容器.Kernel.GetAssignableHandlers
调用断言自己所有东西都在同一个范围内。如果使用
IMyItemFactory
IMyItem
s的
lifestyleperwcfooperation
替换
LifestyleTransient
,它会正确解析
IMyItem
s,但是我需要使用一些
IMyItem
中的
wcfooperation
作用域组件,所以很遗憾,这不是一个解决方案!非常感谢。就是这样,我想是这个错误:
public SomeDataProvider(IElasticsearchClient elasticClient, IMyItemFactory factory)
{
    _elasticClient = elasticClient;

    _factory = factory;
}

async Task SomeMethod()
{
    var someString = await _elasticClient.SomeMethod(); // ok

    var myItem = _factory.GetMyItem(someString); // exception from above

    // ...
}