在 MEF 中公开第三方视觉控制的正确方法

发布于 2024-09-29 04:20:38 字数 116 浏览 6 评论 0原文

这样做的正确方法是什么? 假设我们的项目中有一些第三方库,我们需要提供对一些密封控件的访问。 新的小部件将使用 MEF 创建并添加到应用程序中,并且它们应该能够从核心应用程序导入一些控件。 那么如何正确导出这些控件呢?

What is the proper way to do that?
Let's say we have some third party library in our project and we need to provide an access to some controls which are sealed.
New widgets will be created and added to the application using MEF and they should be able to import some controls from the core application.
So how to export those controls properly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

翻身的咸鱼 2024-10-06 04:20:38

如果您无法修改原始类(例如 ThirdPartyComponent),那么您可以通过另一个类(例如 ThirdPartyComponentExporter)上的属性进行导出:

public class ThirdPartyComponentExporter
{
   [Export(typeof(ThirdPartyComponent))]
   public ThirdPartyComponent Foo
   {
      get
      {
         return new ThirdPartyComponent();
      }
   }
}

对于可视控件,您可能有使用 CreationPolicy.NonShared 来防止 MEF 在不同位置重用同一实例。

If you cannot modify the original class (e.g. ThirdPartyComponent), then you can do the export via a property on another class (e.g. ThirdPartyComponentExporter):

public class ThirdPartyComponentExporter
{
   [Export(typeof(ThirdPartyComponent))]
   public ThirdPartyComponent Foo
   {
      get
      {
         return new ThirdPartyComponent();
      }
   }
}

For visual controls, you may have to use CreationPolicy.NonShared to prevent MEF from reusing the same instance in different locations.

傾城如夢未必闌珊 2024-10-06 04:20:38

将第三方控件包装在“导出”类中,然后通过包装器访问该控件怎么样?

What about wrapping the third party controls in "export" classes and then access this control through the wrapper?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文