MEF - 构造函数中导入的对象为 null

发布于 2024-12-24 17:16:27 字数 329 浏览 0 评论 0原文

我使用 MEF 来将 UnityContainer 注入到我的应用程序的插件中。

每个插件都包含面板。

我想也通过 MEF 将 Unity 容器传输到面板中。

我需要在面板的构造函数中使用 Unity。

问题是 Unity 没有初始化。

因此,在创建面板后,我在插件中使用 CompositionContainer.ComposeParts(panel) 。这 问题是我想在面板的构造函数中使用Unity。

我不想将 UnityContainer 或 CompositionContainer 作为面板构造函数中的参数发送。

谢谢

I'm using MEF in order to inject UnityContainer into the plugins in my application.

each one of the Plugins hold panels.

I want to transfer the Unity container into the panels also by MEF.

I need to use the Unity in the constructor of the panels.

The problem is that the Unity is not getting initialized.

So, I use the CompositionContainer.ComposeParts(panel) in the Plugin after I created the panel. The
problem is that I want to use the Unity in the constructor of the panels.

I don't want to send the the UnityContainer or the CompositionContainer as a parameter in the panel's constructor.

thanks

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

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

发布评论

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

评论(1

一刻暧昧 2024-12-31 17:16:27

你没有发布一些代码,所以我只是假设:

如果你这样做:

public class Bar
{
   [ImportingConstructor]
   public Bar(IMyImportedService service)
   {
      //service should not be null
   }
}

如果你这样做

public class Bar
{
   [Import]
   private IMyImportedService service;

   public Bar()
   {
      //service should be null, because you have to implement IPartImportsSatisfiedNotificationand use OnImportsSatisfied
   }
}

you dont have posted some code so i just assume:

if you do it that way:

public class Bar
{
   [ImportingConstructor]
   public Bar(IMyImportedService service)
   {
      //service should not be null
   }
}

if you do it this way

public class Bar
{
   [Import]
   private IMyImportedService service;

   public Bar()
   {
      //service should be null, because you have to implement IPartImportsSatisfiedNotificationand use OnImportsSatisfied
   }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文