用户界面 - 将 C# GUI 组件封装在 DLL 中

本文关键字:封装 DLL 组件 GUI 用户界面 | 更新日期: 2023-09-27 17:56:37

我负责设计一个系统,该系统由1)处理与设备的通信的GUI和2)组成表示设备将在其中运行的模式的 DLL。

每种模式都需要不同的配置详细信息,因此想法是让每个 DLL 包含一个方法来生成可放置在 GUI 中的控件填充面板。

到目前为止,我在 C# 方面的工作已经不那么复杂了,我不确定如何实现这种功能。 我还没有成功地找到这种实现的帮助或示例。 有人可以指出我正确的方向吗?

用户界面 - 将 C# GUI 组件封装在 DLL 中

你将需要一个具有接口和基类的基 dll。然后,其他 dll 将引用该基 dll 并扩展/派生/实现这些基类/接口。

例如,如果您有一个 dll (Base.dll),其接口如下:

public interface CoolGui {
  void DrawGui(Graphics g); 
}

然后你的另外两个dll(一.dll和二.dll)将引用Base.dll并在其UI中实现CoolGui。

编辑:

当然,您需要动态加载 dll 并使用反射来获取接口/基类的正确实例。这里有一篇代码项目文章可以提供帮助:http://www.codeproject.com/KB/cs/DynLoadClassInvokeMethod.aspx

你的意思是希望能够动态加载 DLL 吗?查看Assembly.LoadFile。从那里,您可以使用其成员和 GetMember 从 DLL 中的类加载静态成员,所有这些都是动态的。我建议调用一个将返回共享接口(由两个程序引用)或其他东西的方法,因为如果不这样做,就很难绕过。