2012-04-06 5 views
0

私はwinformsアプリケーションを持っています。私は3人のクライアントにそれを渡し、それぞれにはちょっとした微調整やカスタマイズだけが必要です。これを達成するために、私はクライアントごとに別々のバージョンを用意しなければなりません。私はこのようにして多くのバージョンを持っていることがあります。私は依存性注入はこれを処理する方法だろうと思ったが、あなたはメインメソッドに依存関係を登録しなければならないと聞きました。そして、それぞれのクライアントDLLへの参照を追加しなければなりません。これを処理するのに好ましいオブジェクト指向の方法は何ですか?これを処理するより良い方法はありますか?特定のクライアントのwinformアプリケーションの変更

+0

これらのカスタマイズのために十分な金額を請求していないようです。 –

+0

保管は安いです。インタフェースはビジネスロジックとは別にしてください。彼らがカスタムビジネスロジックを求めているのであれば、まずはフォークでなければなりません。私は正直なところ、この問題を理解していません。 –

答えて

3

実行時にアセンブリをロードするPlug-in pattenを使用することができる:(リンクから)

アプリケーションコードは、各特定の挙動の異なる実装を必要とする、複数のランタイム環境で実行されるときインタフェース(476)がしばしば使用される分離。

ほとんどのDIフレームワークがこの機能を提供します。 roll your ownにしたくない場合は、選択したフレームワークのサンプルをたくさん検索することができます。

  1. Ninject
  2. MEF
0

あなたが別のカスタマイズを実現するために異なる設定ファイルと同じバイナリを再利用することができるようにあなたは、あなたのDIコンテナを設定するには、コンフィギュレーションファイルを使用することができます。しかし、すべての異なる設定を徹底的にテストする必要があります。同じアプリケーションのわずかに異なるバージョンは、予期しない休憩を起こさずに維持するのは簡単ではありません。

0

カスタム化の性質によっては、関連するすべての変更を(プロジェクト全体に広げたままではなく)プロジェクトの別個の部分に取り込むことができます。可能ならば(例えば、クライアントによって提供されるファイリング機能)、DLLを動的に(例えば設定ファイルに基づいて)ロードし、DLL内の関数がカスタマイズを達成するために必要な機能を実行できるようにすることができますメインコードによって提供される)。

このようにして、クライアントの必要に応じて動的に(起動時にdllをロードするだけであっても)変更できるコードに事前定義されたフックを提供します。クライアントが変更したいという明確な機能があれば、これらのDLLを複数のDLLに分けることができますが、すべての機能を必ずしもすべての臨床試験に適用する必要はありません。次に、DLLの "デフォルト"バージョンを提供することができます。

フックを開発するのは、クライアントの設定に依存します。

これらのフックがどのように動作するのかについての適切なドキュメントを提供することを忘れないでください。

関連する問題