私はwinformsアプリケーションを持っています。私は3人のクライアントにそれを渡し、それぞれにはちょっとした微調整やカスタマイズだけが必要です。これを達成するために、私はクライアントごとに別々のバージョンを用意しなければなりません。私はこのようにして多くのバージョンを持っていることがあります。私は依存性注入はこれを処理する方法だろうと思ったが、あなたはメインメソッドに依存関係を登録しなければならないと聞きました。そして、それぞれのクライアントDLLへの参照を追加しなければなりません。これを処理するのに好ましいオブジェクト指向の方法は何ですか?これを処理するより良い方法はありますか?特定のクライアントのwinformアプリケーションの変更
答えて
実行時にアセンブリをロードするPlug-in pattenを使用することができる:(リンクから)
アプリケーションコードは、各特定の挙動の異なる実装を必要とする、複数のランタイム環境で実行されるときインタフェース(476)がしばしば使用される分離。
ほとんどのDIフレームワークがこの機能を提供します。 roll your ownにしたくない場合は、選択したフレームワークのサンプルをたくさん検索することができます。
あなたが別のカスタマイズを実現するために異なる設定ファイルと同じバイナリを再利用することができるようにあなたは、あなたのDIコンテナを設定するには、コンフィギュレーションファイルを使用することができます。しかし、すべての異なる設定を徹底的にテストする必要があります。同じアプリケーションのわずかに異なるバージョンは、予期しない休憩を起こさずに維持するのは簡単ではありません。
カスタム化の性質によっては、関連するすべての変更を(プロジェクト全体に広げたままではなく)プロジェクトの別個の部分に取り込むことができます。可能ならば(例えば、クライアントによって提供されるファイリング機能)、DLLを動的に(例えば設定ファイルに基づいて)ロードし、DLL内の関数がカスタマイズを達成するために必要な機能を実行できるようにすることができますメインコードによって提供される)。
このようにして、クライアントの必要に応じて動的に(起動時にdllをロードするだけであっても)変更できるコードに事前定義されたフックを提供します。クライアントが変更したいという明確な機能があれば、これらのDLLを複数のDLLに分けることができますが、すべての機能を必ずしもすべての臨床試験に適用する必要はありません。次に、DLLの "デフォルト"バージョンを提供することができます。
フックを開発するのは、クライアントの設定に依存します。
これらのフックがどのように動作するのかについての適切なドキュメントを提供することを忘れないでください。
- 1. Winformコントロールの変更イベントfire
- 2. C#WinForm:特定の単語を選択して色を変更する
- 3. Winformアプリケーションのデータベースセキュリティ
- 4. winformアプリケーションのデフォルトボタンプロパティ
- 5. 特定のアプリケーションのないビーコンマイナーとメジャーの変更
- 6. クライアントとのDNSサーバ設定の変更
- 7. winformの変更ツールヒントの背景色
- 8. C#WinFormテキストの変更/終了のプロンプト
- 9. WinFormアプリケーションのSecure ConnectionString
- 10. C#WinFormアプリケーションのデバッグ
- 11. nhibernate winformアプリケーションの例
- 12. WinFormアプリケーションの配備
- 13. winformアプリケーションのthree.js C#
- 14. WinFormアプリケーションをWPFアプリケーションに変換する
- 15. 変更特定のインデックス
- 16. アプリケーションの設定変更のシステム設定を変更します
- 17. 特定のクライアント/サーバ・マルチキャストの設定
- 18. .htacessの特定のURLの変更
- 19. 変更Winformアイコン障害。ただし、自分のアプリケーションのショートカットファイルを削除しました。変更しました
- 20. クライアントwinformとサーバーのWebサービス通信プロジェクト
- 21. webapiとwinformクライアントのauth0ロール認証
- 22. WinformアプリケーションのEF(Self Track Entities)
- 23. WinFormアプリケーションのMVVM実装
- 24. WinFormアプリケーションのNHibernateとAUTOFAC
- 25. スプリッタ - 特定のノードのサイズを変更
- 26. Typoscript entry特定のページのレベル変更
- 27. contenteditableの特定の変更を聞く?
- 28. ブランチGitの特定の変更点
- 29. アプリケーションでの言語設定の変更
- 30. .NETアプリケーションのTimeZoneの設定/変更
これらのカスタマイズのために十分な金額を請求していないようです。 –
保管は安いです。インタフェースはビジネスロジックとは別にしてください。彼らがカスタムビジネスロジックを求めているのであれば、まずはフォークでなければなりません。私は正直なところ、この問題を理解していません。 –