我负责设计一个系统,该系统由1)处理与设备通信的GUI和2)代表设备运行模式的DLL组成。
每种模式都需要不同的配置细节,因此我们的想法是让每个DLL都包含一个方法来生成一个可以放在GUI中的控件填充面板。
到目前为止,我在C#中的工作涉及的程度较低,而且我不确定如何实现这种功能。我没有成功找到这种实现的帮助或示例。有人能指出我正确的方向吗?
答案 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中的类加载静态成员。我建议调用一个方法来返回一个共享接口(由两个程序引用)或者某些东西,因为没有这样做就很难绕过它。