3


2

Castle Windsorを使用して、シングルトンとして登録されたインスタンスを積極的にインスタンス化できますか?

キャッスルウィンザーでは、シングルトンライフサイクルにインスタンスを登録するときに、インスタンスを積極的にインスタンス化する方法はありますか(最初にインジェクトされるときに初期化するのではなく)。

更新:

ここでさらに詳細が役立つと思いました:

  1. これらのインスタンスには、初期化コードが含まれています。 起動時に実行するのが有利であるため、これに興味があります。

  2. 私はこれらのインスタンスのかなりの数を使用して登録しています `AllTypes.Pick()`なので、コンテナを構築した後、コンテナからの各インスタンスを個別に手動で解決する必要のないソリューションを好みます。

1 Answer


4


はい、Startable Facilityを使用できます(Windsorに同梱されています):

container.AddFacility(
// optionally in v2.5
f=> f.DeferredStart()
);
container.Register(
   AllTypes.FromThisAssembly()
      .Pick().WhateverYouWant()
      .Configure(c => c.Start());

`DeferredStart`メソッドはv2.5で新しく追加され、http://stw.castleproject.org/%28S%28su2mgm45fclhqe55veo40545%29%29/Windsor.Startable-Facility.ashx?NoRedirect = 1&NS = Windsor [ここにあります] whatそれとそれを使用することが推奨される理由。 サンプルでは、​​v2.5の新しいAPIの一部を使用していますが、v2.1を使用している場合は、これを実現する方法のアイデアが得られるはずです。

以前のバージョンでは、メソッド「Start()」は「Startable()」と呼ばれていました