DryIoc:无法弄清楚如何注册 IDisposable Decorator 对象
DryIoc : Can't figure out how to register IDisposable Decorator object
我正在尝试围绕 IDisposable
数据库上下文设置装饰器:
c.Register<IContext, DbContext>(setup: Setup.With(trackDisposableTransient: true));
// c.Register<IContext, ConsoleTimedContext>(setup: Setup.Decorator);
如果我取消注释最后一行,程序会抛出:
DryIoc.ContainerException: Registered Disposable Transient service Lib.DI.IContext with key {no key} and factory container won't be disposed by container. DryIoc does not hold reference to resolved transients, and therefore does not control their dispose. To silence this exception Register<YourService>(setup: Setup.With(allowDisposableTransient: true)) or set the rule Container(rules => rules.WithoutThrowOnRegisteringDisposableTransient()). To enable tracking use Register<YourService>(setup: Setup.With(trackDisposableTransient: true)) or set the rule Container(rules => rules.WithTrackingDisposableTransient())
à DryIoc.Throw.It(Int32 error, Object arg0, Object arg1, Object arg2, Object arg3)
à DryIoc.Container.ThrowIfInvalidRegistration(Factory factory, Type serviceType, Object serviceKey, Boolean isStaticallyChecked)
à DryIoc.Container.Register(Factory factory, Type serviceType, Object serviceKey, IfAlreadyRegistered ifAlreadyRegistered, Boolean isStaticallyChecked)
à DryIoc.Registrator.Register[TService,TImplementation](IRegistrator registrator, IReuse reuse, Made made, Setup setup, IfAlreadyRegistered ifAlreadyRegistered, Object serviceKey)
如何将 Setup.Decorator
与 trackDisposableTransient
混合使用?
该设置不适用于每个 Decorator 注册(从最新的 DryIoc v2.8.3 开始)。
现在您需要为装饰器指定非瞬态重用。
欢迎在以下位置提出问题:https://bitbucket.org/dadhi/dryioc
我正在尝试围绕 IDisposable
数据库上下文设置装饰器:
c.Register<IContext, DbContext>(setup: Setup.With(trackDisposableTransient: true));
// c.Register<IContext, ConsoleTimedContext>(setup: Setup.Decorator);
如果我取消注释最后一行,程序会抛出:
DryIoc.ContainerException: Registered Disposable Transient service Lib.DI.IContext with key {no key} and factory container won't be disposed by container. DryIoc does not hold reference to resolved transients, and therefore does not control their dispose. To silence this exception Register<YourService>(setup: Setup.With(allowDisposableTransient: true)) or set the rule Container(rules => rules.WithoutThrowOnRegisteringDisposableTransient()). To enable tracking use Register<YourService>(setup: Setup.With(trackDisposableTransient: true)) or set the rule Container(rules => rules.WithTrackingDisposableTransient())
à DryIoc.Throw.It(Int32 error, Object arg0, Object arg1, Object arg2, Object arg3)
à DryIoc.Container.ThrowIfInvalidRegistration(Factory factory, Type serviceType, Object serviceKey, Boolean isStaticallyChecked)
à DryIoc.Container.Register(Factory factory, Type serviceType, Object serviceKey, IfAlreadyRegistered ifAlreadyRegistered, Boolean isStaticallyChecked)
à DryIoc.Registrator.Register[TService,TImplementation](IRegistrator registrator, IReuse reuse, Made made, Setup setup, IfAlreadyRegistered ifAlreadyRegistered, Object serviceKey)
如何将 Setup.Decorator
与 trackDisposableTransient
混合使用?
该设置不适用于每个 Decorator 注册(从最新的 DryIoc v2.8.3 开始)。
现在您需要为装饰器指定非瞬态重用。
欢迎在以下位置提出问题:https://bitbucket.org/dadhi/dryioc