以下是我的问题的故事:
我有一个.Net(C#)windows应用程序。这个应用程序包含一个面板,一个下拉菜单和一个按钮。
我的可执行文件(winapp ... exe)附近有一个名为plugins
的文件夹,我希望它包含我的自定义程序模块文件。像(add2digit.moduleextention,add3digit.moduleextention,addNdigit.moduleextention,...)。这些文件的列表将显示在我的下拉列表中。所有这些自定义模块文件都需要用C#编写,并且所有必须实现的接口都包含一个方法{panel :: GetGUI()};
当我更改下拉列表时,我希望使用它的GetUI()方法将所选模块GUI加载到面板中。通过这种方式,如果我开发了更多模块,我将不需要重新编译我的代码。请给我一些帮助我解决这个问题的关键词或解决方案。
答案 0 :(得分:2)
您需要创建Interface
GetUI()
以及其中声明的其他方法并在插件中实现,然后在您的主应用程序中,您应该执行以下操作:
using System.Reflection;
// ...
Assembly assembly = Assembly.LoadFile(file);
yourInterface plugin = (yourInterface)Activator.CreateInstance(Type.GetType(assembly));
// ...
plugin.GetUI(); // or whatever