私のチームは、ホスト アプリケーションがプラグインの動作を調整するプラグイン プロジェクトを開発しています (各プラグインには特定の機能があり、別のスレッドで実行されます)。私はホスト アプリケーションを作成し、IPlugin インターフェイスを定義しています。他の開発者は、私の IPlugin インターフェイスを参照して、彼のプラグインを開発します。
そして、私のチームに問題を提起してください: 一部の開発者は Nlog を使用してプラグインの作業をログに記録しますが、他の開発者は Log4Net を使用します。
私の質問は、各プラグインが使用したいロギング コンポーネントを使用できるようにする方法です。
ありがとうございました!
1 に答える
0
だからあなたがインターフェースを作るとしましょう:
interface ILoggerPlugin
{
void Log(LogInfo info);
}
そしてあなたのすべての情報のためのクラス
class LogInfo
{
public string Application;
public Exception LoggedException;
}
ここで、インターフェイスを引き渡し、すべての開発者にこれに従うように依頼すると、他のすべてのビットが抽象化されます。プラグインのエンドユーザーは、実装として何が使用されているかを知る必要はありません。その NLog または Log4Net を風化します。
私たちはそのようなものを実装しました。さらに、データベース、ファイル、および/または重要なものの電子メールを指すターゲット変数もあります。
于 2015-04-17T07:52:57.913 に答える