-
-
Notifications
You must be signed in to change notification settings - Fork 184
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RegisterInstanceで登録したインスタンスの生存期間を設定したい #169
Comments
お。どちらかというと この挙動が おかしいですね。。
個人的には、生成済みのインスタンスが使用される場合は、生成タイミングと寿命を変更のしようがないので、ライフタイムの指定はナンセンスかなと思っています。 |
外で作ったインスタンスをLifetimeScopeに管理してほしくないのでLifetime.TransientにしてDisposeされないようにしたい、などと考えていました。 |
Lifetime.Singleton固定でも大丈夫、と書きましたがもう少し考えてみました。 #171 のプルリクだとResolveされた場合にのみDisposeされることになりそうです。 登録されたインスタンスをDIコンテナが破棄すべきかはAutofacでも議論になっていました。 Resolveされるかに関わらず必ず破棄されるように直すのは面倒な気もするので、VContainerでは破棄しないとするのもいいのではいでしょうか。 |
これはたしかにそうですね。 僕としては、どこからも Resolve されないのに RegisterInstance されている状態がそもそもあまり望ましくないと思っていたりしますが、とはいえ 挙動は統一されて良いとは思います。
自分は どちらかというとこの挙動(デフォルトでコンテナが破棄)のほうがしっくりきていたりします。 RegisterInstance したものをコンテナに破棄してほしいかどうかは、場合によるのではないでしょうか。
ただ 、どちらをデフォルトにするかはともかく、双方の機能を選択できるのがよさそうです。 |
変更:
理由:
-- I considered the behavior of Change :
Reason:
|
Released in v1.8.0 参考になりました。また何かあればお願いします。 |
ver1.6.0現在、RegsiterInstanceで登録したインスタンスは全てLifetime.Scopedで管理されているようです。
それによってIDisposableを実装したインスタンスがLifetimeScopeごとにDisposeされてしまっています。
LifetimeScopeに親子関係を持たせる場合、子のLifetimeScopeが破棄されると親のLifetimeScopeでも登録したインスタンスがDisposeされた状態になるので困ってしまいます。
RegisterInstanceのタイミングでLifetimeも指定できるAPIがあると嬉しいです。
The text was updated successfully, but these errors were encountered: