我有一个奇怪的 MEF 问题,我在一个测试项目中对此进行了测试,一切似乎都运行良好,但由于某种原因无法在实际项目中运行
这是导出代码
public void RegisterComponents()
{
_registrationBuilder = new RegistrationBuilder();
_registrationBuilder
.ForTypesDerivedFrom(typeof(MyType))
.SetCreationPolicy(CreationPolicy.NonShared)
.Export();
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(typeof(MyType).Assembly, _registrationBuilder));
var directoryCatalog = new DirectoryCatalog(PathToMyTypeDerived, _registrationBuilder);
catalog.Catalogs.Add(directoryCatalog);
_compositionContainer = new CompositionContainer(catalog);
_compositionContainer.ComposeParts();
var exports = _compositionContainer.GetExportedValues<MyType>();
Console.WriteLine("{0} exports in AppDomain {1}", exports.Count(), AppDomain.CurrentDomain.FriendlyName);
}
出口计数为 0 :( 任何想法为什么?
在日志文件中我有很多这样的
System.ComponentModel.Composition 信息:6:ComposablePartDefinition 'SomeOthertype' 被忽略,因为它不包含导出。
虽然我认为这没关系,因为我对导出 'someOtherType' 不感兴趣
更新:我找到了这个链接,但在调试之后我并不聪明,但也许我没有正确跟进。
感谢您的任何指点
干杯