c# – MEF:DirectoryPartCatalog
发布时间:2020-12-15 08:24:15 所属栏目:百科 来源:网络整理
导读:我正在尝试编写一个简单的 MEF演示来了解它.我正在关注 this教程,但它似乎已经过时了.可下载的示例有效,但它使用的是比Framwework 4附带的当前版本(4.0)更旧的版本(2008.9.4.0). 特别是,它使用我在最新的库中找不到的DirectoryPartCatalog.任何人都可以提供
我正在尝试编写一个简单的
MEF演示来了解它.我正在关注
this教程,但它似乎已经过时了.可下载的示例有效,但它使用的是比Framwework 4附带的当前版本(4.0)更旧的版本(2008.9.4.0).
特别是,它使用我在最新的库中找不到的DirectoryPartCatalog.任何人都可以提供一个示例,说明如何从当前版本的MEF发现目录中的可插入程序集? 谢谢 解决方法
您需要进行一些更改才能使此示例编译并运行内置版本的System.ComponentModel.Composition.
class Program { [ImportMany] // [Import] public IEnumerable<string> Messages { get; set; } [ImportMany] // [Import] public IEnumerable<IOutputString> OutputSet { get; set; } [Import("OutputMessages")] public Action<IEnumerable<IOutputString>,IEnumerable<string>> OutputMessages { get; set; } public void Run() { var catalog = new AggregateCatalog(); // AggregatingComposablePartCatalog catalog.Catalogs.Add(new DirectoryCatalog(@"......ExternalMessagesbinDebug")); // DirectoryPartCatalog catalog.Catalogs.Add(new DirectoryCatalog(@"......ExtraMessages")); // DirectoryPartCatalog catalog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly())); // AttributedAssemblyPartCatalog var container = new CompositionContainer(catalog); // CompositionContainer(catalog.CreateResolver()); // container.AddPart(this); // container.Compose(); container.ComposeParts(this); OutputMessages(OutputSet,Messages); } static void Main(string[] args) { Program p = new Program(); p.Run(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |