C#,如何使用外部文件作为可选模块?
以下是我的问题: 我有一个.Net(C#)windows应用程序。此应用程序包含一个面板、一个下拉列表和一个按钮 在我的可执行文件(winapp…exe)附近有一个名为C#,如何使用外部文件作为可选模块?,c#,.net,module,external,windows,C#,.net,Module,External,Windows,以下是我的问题: 我有一个.Net(C#)windows应用程序。此应用程序包含一个面板、一个下拉列表和一个按钮 在我的可执行文件(winapp…exe)附近有一个名为plugins的文件夹,我希望它包含我的自定义程序模块文件。例如(add2digit.moduleextention、add3digit.moduleextention、addNdigit.moduleextention等)。这些文件的列表将显示在我的下拉列表中。所有这些自定义模块文件都需要用C#编写,并且都必须实现一个包含一个方
plugins
的文件夹,我希望它包含我的自定义程序模块文件。例如(add2digit.moduleextention、add3digit.moduleextention、addNdigit.moduleextention等)。这些文件的列表将显示在我的下拉列表中。所有这些自定义模块文件都需要用C#编写,并且都必须实现一个包含一个方法{panel::GetGUI()}的接口
当我更改下拉列表时,我希望使用其GetUI()方法将所选模块GUI加载到面板中。通过这种方式,如果我开发了更多的模块,我就不需要重新编译代码。请给我一些关键字或解决方案来帮助我解决这个问题。您需要创建一个
接口,其中声明了GetUI()
和其他方法,并在插件中实现,然后在主应用程序中执行以下操作:
using System.Reflection;
// ...
Assembly assembly = Assembly.LoadFile(file);
yourInterface plugin = (yourInterface)Activator.CreateInstance(Type.GetType(assembly));
// ...
plugin.GetUI(); // or whatever
那么我的插件文件应该是什么类型的文件呢?我可以使用.dll文件吗?我认为dll文件是最符合逻辑的,如果不是这里唯一的选择的话。