1

如何在 DryIOC 中禁用延迟解析?我需要立即实例化我的一些单例。

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

4

1 回答 1

2

您可以使用特定的元数据来标记注册,比如使用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()
    .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)); 
于 2016-11-21T19:54:08.800 回答