2016-11-21 7 views
1

DryIOCでレイジー解像度を無効にする方法はありますか?私は、私のシングルトンのいくつかを即座にインスタンス化する必要があります。DryIOCノンレイジー解像度

現時点で私はすべての登録呼び出しを行っており、最初にインスタンス化する必要がある解決呼び出しのブロックがもう1つあります。しかし、それはちょっと難しいです。

+0

直ちに?シングルトンを登録するときは?それから、その前にすべての依存関係を利用できるようにする必要があります。 – dadhi

答えて

1

public enum AutoActivate { It }と言うと、登録に特定のメタデータをマークすることができます。次に、マークされた登録を発見して、それらを好ましい時間に解決する:

var container = new Container(); 
container.Register<IFoo, Foo>(Reuse.Singleton, setup: Setup.With(AutoActivate.It)); 
container.Register<IBar, Bar>(Reuse.Singleton); // don't activate 

// when suitable 
var activatedServices = container.GetServiceRegistrations() l 
    .Where(r => r.Factory.Setup.Metadata is AutoActivate) 
    .OrderBy(r => r.FactoryRegistrationOrder) 
    .GroupBy(r => r.FactoryRegistrationOrder, (f, r) => r.First()) 
    .Select(r => container.Resolve(r.ServiceType, r.OptionalServiceKey));