0

假设我们有一个接口IService及其实现类ServiceIpmlementation

public interface IService
{
    int ThreadId { get; set; }

    DateTime CreationDateTime { get; set; }
}

public class ServiceIpmlementation : IService
{
    public int ThreadId { get; set; }

    public DateTime CreationDateTime { get; set; }

    public ServiceIpmlementation()
    {
        this.ThreadId = Thread.CurrentThread.ManagedThreadId;
        this.CreationDateTime = DateTime.Now;
    }
}

Ninject 用于IService在线程范围内将接口绑定到其实现,如下所示:

...
Kernel.Bind<IService>().To<ServiceIpmlementation>().InThreadScope();
...

当我尝试通过Get方法获取实例时它工作正常:

...
return DI.Kernel.Get<IService>();
...

但是,我还需要为每个线程创建所有实例(用于运行某些作业)。

是否可以通过 Ninject 检索这些实例?

据我所知,在 Ninject 库GetAll<>()的类中声明的方法ResolutionExtensions不适用于这种情况。

4

1 回答 1

1

如果您需要一个线程范围的实例,那么您必须分别在每个线程上获取该实例。您只能访问当前线程实例。获取另一个线程的实例完全违背了线程作用域的想法。

于 2013-01-09T11:25:55.200 回答