DryIOC非惰性分辨率

时间:2016-11-21 02:20:55

标签: dryioc

如何在DryIOC中禁用延迟解决方案?我需要立即对我的一些单身人士进行实例化。

目前我正在进行所有的注册调用,然后在开始时需要另外一块解析调用我需要实例化的那些调用。但它的进展有点笨拙。

1 个答案:

答案 0 :(得分: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));