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 に答える