另一个“X 的最佳方式”,但我有一个问题,我应该如何设计我正在开发的这个特定软件。
我有这个 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++;
}
现在这些任务我需要在运行时动态加载到 ENGINE 程序中。当创建新的 TASK 时,引擎程序将永远不会重新构建或更改。所以我设计它,使每个 TASK 都在它自己的库 DLL 中。因此,引擎将在运行时迭代一个 DLL 文件文件夹,并将每个 DLL 加载到程序集中。
我这样设计它是因为每个 TASK 的初始化、计算和保存都不同。例如,假设我要添加一个新任务,我不必更改 ENGINE 的代码或任何其他 DLL,我只需为 TASK 创建一个新的 DLL,确保它具有这 3 个功能,并将其放入文件夹中. 我的目标是,当需要一个新的 TASK 时,程序员可以打开 Visual Studio,创建一个新的 C# 库,创建三个函数,然后编写实现。
这是处理“类似插件”功能的最佳方式吗?
希望我很清楚。