Reflection 在C#.NET 2.0中实现插件体系结构,无需额外的接口库

Reflection 在C#.NET 2.0中实现插件体系结构,无需额外的接口库,reflection,dll,dynamic,Reflection,Dll,Dynamic,我必须为我的应用程序实现一个插件架构 我有需要在运行时加载的主应用程序和库。我需要我的主应用程序了解dll中定义的类,以便在动态调用期间正确处理它们 我是否需要通过接口实现附加dll来实现此目标,或者是通过其他方式实现此目标?您可以使用Assembly.Load,然后使用反射来检查共享接口/属性的类型。您考虑过吗?该链接还有一个很好的示例您可以使用Assembly.load加载库,然后需要一种方法来检测需要实例化的类型。您可以使用接口(即IPlugin)标记类,然后查看是否可以使用IsAssig

我必须为我的应用程序实现一个插件架构

我有需要在运行时加载的主应用程序和库。我需要我的主应用程序了解dll中定义的类,以便在动态调用期间正确处理它们


我是否需要通过接口实现附加dll来实现此目标,或者是通过其他方式实现此目标?

您可以使用Assembly.Load,然后使用反射来检查共享接口/属性的类型。

您考虑过吗?该链接还有一个很好的示例

您可以使用Assembly.load加载库,然后需要一种方法来检测需要实例化的类型。您可以使用接口(即IPlugin)标记类,然后查看是否可以使用IsAssignableFrom方法将要检查的类型分配给IPlugin类型。另一种方法是使用自定义属性标记类,并查看正在检查的类型是否具有该属性(即PluginAttribute)。在这两种情况下,您都需要将接口或属性类放入第三个库中,以便在主应用程序和插件库中引用。

我必须使用.NET 2.0,因此我不能使用仅在.NET更高版本下可用的MEF。是的,我了解如何使用Assembly.Load。我也知道我需要使用公共接口,由dll实现,并通过我的主应用程序访问此dll。如何共享我的界面?我需要用它创建额外的程序集吗?谢谢,我想你已经为我的问题给出了正确的答案。