我怎么能得到实例在Ninject的每个范围线程

本文关键字:范围 线程 Ninject 怎么能 实例 | 更新日期: 2023-09-27 17:51:08

假设我们有一个接口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库的ResolutionExtensions类中声明的GetAll<>()方法在这种情况下不适用

我怎么能得到实例在Ninject的每个范围线程

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