c#通过插件dll在winform中添加控件

c#通过插件dll在winform中添加控件,c#,winforms,dll,C#,Winforms,Dll,我有一个Winform Gui,可用于各种用途。我正在创建一个额外的插件,如果存在,将另一个tabpage添加到我的tabcontrol中,然后添加所需的控件,等等 我的问题是,我最好将其编码到主应用程序中,即“如果存在dll,则创建此视图”,还是将其编码到dll中并使用反射?可以使用反射吗 谢谢/您也许应该研究一下现有的框架,它正是您所需要的。例如,托管可扩展性框架 MEF为该问题提供了一个简单的解决方案 运行时可扩展性问题。直到 现在,任何想要 支持所需的插件模型 从中创建自己的基础设施 划

我有一个Winform Gui,可用于各种用途。我正在创建一个额外的插件,如果存在,将另一个tabpage添加到我的tabcontrol中,然后添加所需的控件,等等

我的问题是,我最好将其编码到主应用程序中,即“如果存在dll,则创建此视图”,还是将其编码到dll中并使用反射?可以使用反射吗


谢谢/

您也许应该研究一下现有的框架,它正是您所需要的。例如,托管可扩展性框架

MEF为该问题提供了一个简单的解决方案 运行时可扩展性问题。直到 现在,任何想要 支持所需的插件模型 从中创建自己的基础设施 划痕这些插件通常是 特定于应用程序,无法删除 跨多个应用程序重用 实现。MEF提供了一个 主机应用程序的标准方式 暴露自己并消耗外部资源 扩展。扩展,按其 自然,可在其中重复使用 不同的应用。但是, 扩展仍然可以实施 以特定于应用程序的方式。 扩展本身可以依赖于 彼此和MEF将确保 它们以正确的方式连接在一起 订购(另一件你不必订购的东西) 担心)。MEF提供了一套 针对您的应用程序的发现方法 定位和加载应用程序 可用的扩展名

或者,如果您需要在单独的应用程序域中,您可以使用托管加载项框架

但在你的情况下,我认为MEF应该这样做。
如果你有这样一个场景,可能会有点过头了。。。但这是一种选择。

您可能应该研究一下现有的框架,它正是您所需要的。例如,托管可扩展性框架

MEF为该问题提供了一个简单的解决方案 运行时可扩展性问题。直到 现在,任何想要 支持所需的插件模型 从中创建自己的基础设施 划痕这些插件通常是 特定于应用程序,无法删除 跨多个应用程序重用 实现。MEF提供了一个 主机应用程序的标准方式 暴露自己并消耗外部资源 扩展。扩展,按其 自然,可在其中重复使用 不同的应用。但是, 扩展仍然可以实施 以特定于应用程序的方式。 扩展本身可以依赖于 彼此和MEF将确保 它们以正确的方式连接在一起 订购(另一件你不必订购的东西) 担心)。MEF提供了一套 针对您的应用程序的发现方法 定位和加载应用程序 可用的扩展名

或者,如果您需要在单独的应用程序域中,您可以使用托管加载项框架

但在你的情况下,我认为MEF应该这样做。 如果你有这样一个场景,可能会有点过头了。。。但这是一种选择