App有插件支持。每个插件(DLL)都有刚刚添加到解决方案中的png类型的图像(当前构建操作是'内容',请参见图片)。每个插件实现一个接口,接口的一个属性是图像表示,例如, 'Icon'财产。我想加载插件,并在工具箱上为每个插件显示该属性的图像。
public interface ISomePlugin {
GetSomeImageTypeDontKnowWhat Icon { get; }
}
[Export(typeof(ISomePlugin))]
internal SomePlugin : ISomePlugin
{
public GetSomeImageTypeDontKnowWhat Icon {
...
return GetSomeImageTypeDontKnowWhat;
}
}
然后我希望(例如)以某种方式将该图像分配给来自后面代码的一些WPF控件内容
// just loaded a plugin thru MEF
btn1.Content = plugin.Icon;
P.S。对不起这么愚蠢的解释问题..
答案 0 :(得分:0)
自己找到解决方案,将图像添加到资源文件中。拜托,您能否回顾并说这是正确的方法吗?难道不存在内存泄漏问题吗?
实施了插件的界面属性' Icon'图像类型为:
public Image Icon { get
{
Stream stream = new MemoryStream();
Settings.icon.Save(stream, ImageFormat.Png);
stream.Position = 0;
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, (int)stream.Length);
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = stream;
bitmapImage.EndInit();
return new Image { Source = bitmapImage };
} }
现在在插件使用者代码中,我使用返回值
// load and enumerate plugins code
btn1.Content = plugin.Icon;