2016-10-25 5 views
1

私はIDisposableデシベルコンテキスト周りセットアップにデコレータをしようとしている:私は最後の行のコメントを解除した場合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.DecoratortrackDisposableTransientをどのように組み合わせるか?

答えて

2

デコレータ登録(最新のDryIoc v2.8.3以降)では設定できません。

今のところ、デコレータに一過性の再利用を指定する必要があります。

はで問題を提起してお気軽に:https://bitbucket.org/dadhi/dryioc

+0

を私はDryIocで全くの初心者ですので、あなたはどのように説明する気にしていますか? そして、もしあれば、副作用は何ですか? –

+1

トランジェントトラッキングの機能は少し議論の余地があり、最初に新しい.NETコアMS.DIに準拠するために導入されました。だから私はできるだけ限られたものにして、それがどうなるか見てみましょう。これをデコレータに追加するのは問題ではない(うまくいけば)。しかし、最初に質問:装飾されたサービスは再利用されていますか? – dadhi

+0

私はDIのコンテキストで_reused_の意味は分かりませんが、私がdbにクエリを行うたびに使用されています。 –

関連する問題