1

一部のビジネスロジックがDLLプロジェクトに分離されているプロジェクトがあります。このDLLには、特定の顧客向けのこのソフトウェアのビジネスロジックが含まれています。

異なるルールを持つ別のクライアントがソフトウェアを実装したいので問題が発生しました。このdllには同じ関数名が含まれていますが、本体が異なることを考慮して、アプリケーションがソフトウェアを使用するクライアントに応じて適切なdllをロードする必要があります。

私はc#3.5を使用していますが、そうする方法はありますか?

4

3 に答える 3

5

はい、できます。プロジェクトを分岐し、クラスの実装を変更し、すべてのクラスとクラスメンバーの署名を同じに保ち、再コンパイルすると、ビジネスロジックが希望どおりに動作します。

しかし、これは良くありません。実装が異なる2つの異なるブランチがあり、そのために署名を永久に同期させる必要があります。そして、別のクライアントと別のクライアントがあります。これは決して終わらない悪夢になります。

異なる機能を分離できる可能性はありますか?あなたはできる:

  • 構成をデータベースまたは構成ファイル(おそらくXML)に入れます。このため、アプリの多くはテーブルまたは構成ファイルに基づいて動作するはずです。
  • コードを変更する必要がある場所にプラグインプロバイダーを実装できます。
  • 一種の古い学校ですが、コードをコンパイルするCodeDomの部分を使用してプラグアンドプレイ機能を実装できます(コードのグラフ化に関する部分は無視してください)。その後、簡単に編集できるテキストファイルに機能を組み込むことができます。
  • この種のもののために構築されたManagedExtensibilityFrameworkを見てください。
于 2010-05-15T20:23:51.973 に答える
1

インターフェイスに対してビジネスロジックをコーディングします-IBusinessLogic。

両方のビジネスロジックを同じアセンブリに保持し、構成ベースの依存性注入を使用して、顧客への展開中に使用するビジネスロジックを指定できます。

于 2010-05-15T21:29:34.660 に答える
1

ビジネスロジックのカスタマイズを探しているよりも、問題を正しく理解している場合。あなたはいくつかの方法でそれを達成することができます。そのうちの1つをここで説明します。

カスタマイズDLL用のフォルダをアプリケーションディレクトリに作成します。ラッパーを介してすべてのビジネスオブジェクトを作成します。これは、リフレクションを使用して、ビジネスオブジェクトの前に適切なクラスのカスタマイズdllを最初にチェックします。それ以外の場合は、通常のクラスからビジネスロジックを作成します。これがお役に立てば幸いです。

于 2011-12-15T13:33:50.950 に答える