C# - 使用MEF

时间:2017-07-24 07:33:30

标签: c# .net plugins resources mef

我正在使用这种方法使我的C#应用​​程序可以扩展到其他开发人员:

Creating a simple plugin mechanism

导入类似的字符串显示在" First Plugin"的链接中。工作得很好,但我也希望插件编写者可以导入一个图像,然后用于主应用程序中的按钮图标。我已经尝试将图像的路径(在插件项目中定义)作为字符串导入,但这不起作用,因为它是一个相对路径(例如Images / Test.jpg,我不想使用绝对路径)和主应用程序没有找到具有此路径的图像。

如何将插件中定义的图像导入主应用程序?

更新 我认为如果我将图像添加到我的dll资源中,它会以某种方式工作。但是如何在主应用程序中访问dll的资源呢?

1 个答案:

答案 0 :(得分:0)

经过几天的研究,我找到了解决问题的方法!基于上面发布的示例,该解决方案对我有用:

在插件项目中执行此操作:

  • 将图像添加到插件项目(例如/Images/Example.png)
  • 在图像集'Build Action'到'Resource'
  • 的属性中
  • 创建此方法:
public ImageSource getIcon()
{
   return new BitmapImage(new Uri("/FirstPlugin;component/Resources/Example.png", UriKind.Relative));
}

在主应用程序中,您可以获取图像并将其设置为RibbonButton-Icon,其中包含:

myRibbonButton.LargeImageSource = plugin.getIcon();