質問: languageDictionary.CreateLanguageDictionary(); } ``` ボタンを押すたびにエクセルを新しく作って指定したデータを出力するという処理です。 この処理自体は一度目は正しく動いてくれますが、Resolveメソッドを呼んだ結果が1度目と同じインスタンスが使いまわされている(?)為、意図した動作をしてくれません。 Resolveメソッドを呼び出す度に新しいインスタンスを生成して欲しいと思っています。 色々と調べた結果、LifetimeManageの管理が出来ていないようだと思いましたが、 LifetimeManagerを指定せずにRegisterTypeを実行するとデフォルトで毎回インスタンスを行うTransientLifetimeManagerが設定されているという説明を見つけました。 どうにかしてResolveメソッドを実行した際に新しいインスタンスを生成して欲しいのですが、 どのようにすればよいのでしょうか。
回答: 質問1. ===== 必ず実行されるところに書く。必ず実行しないと、取れないので。 素直にPrismのサンプルを見ればいいじゃない。 https://github.com/PrismLibrary/Prism-Samples-Wpf https://github.com/PrismLibrary/Prism-Samples-Windows 質問2. ===== 毎回新しいインスタンスがほしいなら、、DIを使わず、毎回、newすればいいのでは??? 複数のクラス間で、オブジェクトを疎に共有したいときに使うのが、DIですよ? 調べて知っていると思いますが、制御の反転のためですよ。 https://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E3%81%AE%E5%8F%8D%E8%BB%A2 毎回同じことをするのに、長いのを書きたくないなら、静的メソッドを作ればいいだけでは?