一部のビジネスロジックがDLLプロジェクトに分離されているプロジェクトがあります。このDLLには、特定の顧客向けのこのソフトウェアのビジネスロジックが含まれています。
異なるルールを持つ別のクライアントがソフトウェアを実装したいので問題が発生しました。このdllには同じ関数名が含まれていますが、本体が異なることを考慮して、アプリケーションがソフトウェアを使用するクライアントに応じて適切なdllをロードする必要があります。
私はc#3.5を使用していますが、そうする方法はありますか?
一部のビジネスロジックがDLLプロジェクトに分離されているプロジェクトがあります。このDLLには、特定の顧客向けのこのソフトウェアのビジネスロジックが含まれています。
異なるルールを持つ別のクライアントがソフトウェアを実装したいので問題が発生しました。このdllには同じ関数名が含まれていますが、本体が異なることを考慮して、アプリケーションがソフトウェアを使用するクライアントに応じて適切なdllをロードする必要があります。
私はc#3.5を使用していますが、そうする方法はありますか?
はい、できます。プロジェクトを分岐し、クラスの実装を変更し、すべてのクラスとクラスメンバーの署名を同じに保ち、再コンパイルすると、ビジネスロジックが希望どおりに動作します。
しかし、これは良くありません。実装が異なる2つの異なるブランチがあり、そのために署名を永久に同期させる必要があります。そして、別のクライアントと別のクライアントがあります。これは決して終わらない悪夢になります。
異なる機能を分離できる可能性はありますか?あなたはできる:
インターフェイスに対してビジネスロジックをコーディングします-IBusinessLogic。
両方のビジネスロジックを同じアセンブリに保持し、構成ベースの依存性注入を使用して、顧客への展開中に使用するビジネスロジックを指定できます。
ビジネスロジックのカスタマイズを探しているよりも、問題を正しく理解している場合。あなたはいくつかの方法でそれを達成することができます。そのうちの1つをここで説明します。
カスタマイズDLL用のフォルダをアプリケーションディレクトリに作成します。ラッパーを介してすべてのビジネスオブジェクトを作成します。これは、リフレクションを使用して、ビジネスオブジェクトの前に適切なクラスのカスタマイズdllを最初にチェックします。それ以外の場合は、通常のクラスからビジネスロジックを作成します。これがお役に立てば幸いです。