2016-11-21 61 views
1

如何在DryIOC中禁用懶惰分辨率?我需要一些單身人士立即實例化。DryIOC非懶惰分辨率

目前我正在做我所有的註冊調用,然後有另一個解決方案調用塊用於我需要在開始時實例化的調用。但它有點笨拙。

+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));