1

それらの「Xへの最良の方法」のもう1つですが、私が取り組んでいるこの特定のソフトウェアをどのように設計すべきかについて質問があります。

TASKS のリストを反復処理し、各 TASK で同じ 3 つのメソッドを呼び出す C# WPF ソフトウェア (ENGINE と呼びましょう) があります: initialize()、calculate()、および save()。

//Simplified obviously (I use indexes vs. foreach because of other code I left out)
while(currentOperatingIndex < tasks.Count)
{
    Task currentTask = tasks.ElementAt(currentOperatingIndex);
    currentTask.initialize();
    currentTask.calculate();
    currentTask.save();
    currentOperatingIndex++;
}

これらの TASKS は、実行時に ENGINE プログラムに動的にロードする必要があります。エンジン プログラムは、新しい TASK が作成されたときに再構築または変更されることはありません。そこで、各 TASK が独自のライブラリ DLL になるように設計しました。したがって、エンジンは実行時に DLL ファイルのフォルダーを繰り返し処理し、各 DLL をアセンブリに読み込みます。

各 TASK の初期化、計算、および保存が異なるため、このように設計しました。たとえば、新しいタスクを追加したい場合、エンジンのコードやその他の DLL を変更する必要はありません。TASK 用の新しい DLL を作成し、これら 3 つの機能があることを確認して、フォルダーに配置します。 . 私の目標は、新しい TASK が必要になったときに、プログラマーがビジュアル スタジオを開き、新しい C# ライブラリを作成し、3 つの関数を作成し、実装を記述できるようにすることです。

これは「プラグインのような」機能を処理する最良の方法ですか?

うまくいけば、私は明確です。

4

2 に答える 2

0

私の質問へのコメントで Alexei Levenkov が述べたように、追加のコードを追加せずにプログラムにプラグインを動的に追加しようとしている場合は、多くのプラグインをカタログにインポートする MEF を使用し、そこから使用できます。ご意見をお寄せいただきありがとうございます。

于 2013-04-10T20:15:21.753 に答える