我正在编写IntelliSense实现,我正在尝试访问VisualStudio的图标集。我知道你的意思是使用MEF,不管怎样,你导入的属性/字段应该自动填充。目前我有:
[Import]
public IGlyphService GlyphService { get; set; }
GlyphService始终为null。我错过了什么?
答案 0 :(得分:0)
显然,您确实必须手动填充和撰写CompositionContainer。我的解决方案看起来像这样:
// An aggregate catalog that combines multiple catalogs
var catalog = new AggregateCatalog();
// Adds all the parts found in the necessary assemblies
catalog.Catalogs.Add(new AssemblyCatalog(typeof(IGlyphService).Assembly));
catalog.Catalogs.Add(new AssemblyCatalog(typeof(SmartTagSurface).Assembly));
// Create the CompositionContainer with the parts in the catalog
CompositionContainer mefContainer = new CompositionContainer(catalog);
// Fill the imports of this object
mefContainer.ComposeParts(this);
运行此对象后,当前对象(或您在撰写部件中选择的对象)将填充它的Imports。我遇到了一些问题,包括需要在程序的bin文件夹中包含引用的dll。