質問

(この質問は特にC#にありますが、一般的には.NETに適用されます)

かなり良いデザインの大きなアプリケーションがあり、インターフェース上で主要なセクションに分割されています(これは並列開発を支援するために行われました)。

必要なインターフェイスを実装する具象クラスのプライマリセットが用意されましたが、別の状況やテスト用に具象クラスの追加セットもあります。

現時点では、これらのクラスをすべてコードのトップレベルでまとめます:

IMyInterface xComponent = new ConcreteXComponent1();

コンポーネントを交換する場合は、その行を変更して再コンパイルするだけです。

// IMyInterface xComponent = new ConcreteXComponent1();
IMyInterface xComponent = new ConcreteXComponentAlternative();

それはうまく機能しますが、明らかに再コンパイルが必要です。具体的なクラスは、構成ファイルの値を使用して選択したほうがいいでしょう。

構成ファイルを使用して具体的なクラスを変更するための標準パターンは何ですか?この問題を解決するために使用できる標準ライブラリはありますか?

ありがとう!

役に立ちましたか?

解決

IoCコンテナを確認します。 (Spring.NET、StructureMap、Windsorなど)

他のヒント

Activator.CreateInstance メソッドを使用できます。メソッドオーバーロードの1つは、型名を受け取り、既定のコンストラクターを使用してそのインスタンスを作成します。その後、クラスのタイプ名を設定ファイルに保存し、アプリケーションから読み取ることができます。

ファクトリパターンを試す

http://en.wikipedia.org/wiki/Abstract_factory_pattern

IoCコンテナを使用すると、動的にロードできるオブジェクトのプールまたはコレクションが作成されます。 Romainが提案したフレームワークは、オブジェクトとそれらがインスタンス化される方法を説明する構成ファイルを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top