Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#,如何使用外部文件作为可选模块?_C#_.net_Module_External_Windows - Fatal编程技术网

C#,如何使用外部文件作为可选模块?

C#,如何使用外部文件作为可选模块?,c#,.net,module,external,windows,C#,.net,Module,External,Windows,以下是我的问题: 我有一个.Net(C#)windows应用程序。此应用程序包含一个面板、一个下拉列表和一个按钮 在我的可执行文件(winapp…exe)附近有一个名为plugins的文件夹,我希望它包含我的自定义程序模块文件。例如(add2digit.moduleextention、add3digit.moduleextention、addNdigit.moduleextention等)。这些文件的列表将显示在我的下拉列表中。所有这些自定义模块文件都需要用C#编写,并且都必须实现一个包含一个方

以下是我的问题:

我有一个.Net(C#)windows应用程序。此应用程序包含一个面板、一个下拉列表和一个按钮

在我的可执行文件(winapp…exe)附近有一个名为
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文件是最符合逻辑的,如果不是这里唯一的选择的话。