私は構造マップコードで.singleton()を使用する必要があるかどうかを理解しようとしています。 stackoverflow(StructureMap singleton)でこれについての質問は既にありますが、私は間違いなく正しい構文を使用していることを確認したいと思います。Structuremapシングルトンの使用
x.For<IApprovedProgrammesHelper>().Use<ApprovedProgrammesHelper>();
x.For(typeof(ICache<>))
.Use(typeof(CacheHelper<>))
.Dependencies.Add(typeof(TimeSpan), Settings.Instance.HttpCacheExpiration);
は次のようになります:
x.For<IApprovedProgrammesHelper>().singleton().Use<ApprovedProgrammesHelper>();
x.For(typeof(ICache<>))
.Singleton()
.Use(typeof(CacheHelper<>))
.Dependencies.Add(typeof(TimeSpan), Settings.Instance.HttpCacheExpiration);
これが正しいのである答えの一つは、私は型を返すいた場合、私はここに私のコードはなるように().singleton使用する必要があることを意味しますか?または、これがどのように機能すべきか誤解しましたか?どちらの意味がコードのものなのかは完全にはわかりません。いずれにしても、.Use <>ステートメントの型がシングルトンパターンに従わないことには言及する価値があります。事前 サム
あなただけがそれを持ってしても安全であるか否かを知る*一つだけ'CacheHelper'と 'ApprovedProgrammesHelper'のインスタンス*を返します。それ(またはその依存関係)が(変更可能な)状態を持ち、スレッドセーフでない場合は、それらをシングルトンとして定義することはおそらく賢明ではありません。誰でもこの質問に答えられる方法はありません。両方のクラスのコード、依存関係、およびこのコードが実行されているコンテキスト(フレームワークなど)を知ることなしには誰も答えられません。 –
Steven
@スティーブンあなたが正しいと思ったら、関連するクラス/インターフェイスの詳細を知っていれば、シングルトンが適切かどうかを唯一言うことが唯一可能であることを理解するのに少し時間がかかりました。あなたの説明は、私の問題を解明するのに役立ちました - シングルトンを使用することは間違っていたり間違っていたりしています。ご協力いただきありがとうございます。 –