在DLL中封装C#GUI组件

时间:2011-05-17 19:50:52

标签: c# user-interface dll

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

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

到目前为止,我在C#中的工作涉及的程度较低,而且我不确定如何实现这种功能。我没有成功找到这种实现的帮助或示例。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

然后你的另外两个dll(One.dll和Two.dll)将引用Base.dll并在他们的UI中实现CoolGui。

编辑:

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

答案 1 :(得分:0)

你的意思是你想能够动态加载DLL吗?查看Assembly.LoadFile。从那里你可以使用它的成员和GetMember来动态地从DLL中的类加载静态成员。我建议调用一个方法来返回一个共享接口(由两个程序引用)或者某些东西,因为没有这样做就很难绕过它。