1

我正在编写一个 IntelliSense 实现,并试图访问 VisualStudio 的图标集。我了解您打算使用 MEF,并且应该以某种方式自动填充您导入的属性/字段。目前我有:

[Import]
public IGlyphService GlyphService { get; set; }

GlyphService 始终为空。我错过了什么?

4

1 回答 1

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。

于 2012-10-18T00:24:15.087 回答