使っています
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\MyProgram"
私のプログラムで使用されるいくつかのファイルを保存するためのパスとして。アプリケーション全体に同じコードスニペットを貼り付けないようにしたいと思います。
私はそれを確認する必要があります:
- 一度設定したパスを誤って変更することはできません
- それを必要とするクラスはそれにアクセスできます。
私は考えました:
- シングルトンにする
- コンストラクターの依存性注入を使用する
- プロパティ依存性注入の使用
- AOPを使用して、必要な場所にパスを作成します。
それぞれに長所と短所があります。
シングルトンはみんなのお気に入りのむち打ちの少年です。私はそれを使用することに反対していませんが、可能であればそれを避ける正当な理由があります。
CastleWindsorを介したコンストラクターインジェクションをすでに頻繁に使用しています。ただし、これはパス文字列であり、Windsorはシステムタイプの依存関係を適切に処理しません。私はいつでもそれをクラスでラップすることができましたが、それは文字列値を渡すような単純なものにはやり過ぎのようです。いずれにせよ、このルートは、それが使用される各クラスにさらに別のコンストラクター引数を追加します。
この場合のプロパティインジェクションで見られる問題は、値が設定されている場所から必要な場所への間接参照が大量にあることです。それが使用されたすべての場所に到達するには、非常に長い仲介者の列が必要になります。
AOPは有望に見えますが、とにかくロギングにAOPを使用することを計画しているので、これは少なくとも単純な解決策のように聞こえます。
私が考慮していない他のオプションはありますか?検討したオプションの評価でベースから外れていますか?