首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何指定使用System.Composition (MEF2)加载哪些DLL?

如何指定使用System.Composition (MEF2)加载哪些DLL?
EN

Stack Overflow用户
提问于 2016-01-26 10:19:55
回答 1查看 719关注 0票数 1

我正在开发一个新的插件加载器应用程序框架,并阅读所有可用的MEF变体,我认为最具前瞻性和灵活性的是从MEF2作为System.Composition提供的NuGet实现。

不幸的是,大多数(如果不是全部的话)在线教程都是为MEF1编写的,即System.ComponentModel.Composition并使用一个AssemblyCatalog创建,该AssemblyCatalog是通过在目录中显式查找all并将其传递给MEF CompositionContainer创建的。

MEF2没有这个对象,因此我仍然不清楚MEF2在哪里找到它的组件。它们不能在运行时定位(这意味着每个插件都需要作为对加载插件的应用程序的引用)?这让我觉得很奇怪。

有人能说明一下如何在System.Composition中指定哪些程序集将从哪里加载(以及如何设置这个程序集)吗?我知道MEF2的设计考虑到了PCL (我正在编写桌面应用程序),但是如果只需要为这种未来的可移植性付出一个小小的设置代价,我就完全支持它了。如果不是,我将屈服于使用System.ComponentModel.Composition,我可以搞清楚。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-13 23:03:47

目录由ContainerConfiguration替换:

代码语言:javascript
复制
        var conf = new System.Composition.Hosting.ContainerConfiguration();
        conf.WithAssembly(Assembly.GetExecutingAssembly());
        var container = conf.CreateContainer();

        var hwWriter = new HelloWorldWriter();
        container.SatisfyImports(hwWriter);

        Console.WriteLine(hwWriter.Write);
        Console.ReadLine();

ContainerConfiguration中,您将发现更多的With...方法,它们替换了MEF1中的所有不同目录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35011531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档