我正在尝试写一个简单的MEF演示来了解它。我正在学习this教程,但它似乎已经过时了。可下载的示例可以工作,但它使用了一个包含的程序集,该程序集比当前随Framwework 4提供的程序集(4.0)旧2个版本(2008.9.4.0)。特别是,它使用了DirectoryPartCatalog,而我在最新的库中找不到这个目录。有没有人能提供一个关于如何从MEF当前版本的目录中发现可插入程序集的示例?谢谢
jslywgbw1#
您需要进行几项更改,才能使用内置版本的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(@"..\..\..\ExternalMessages\bin\Debug")); // 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(); } }
t98cgbkg2#
目录零件目录现在称为DirectoryCatalog
7gcisfzg3#
我想,你是在寻找DirectoryCatalog
3条答案
按热度按时间jslywgbw1#
您需要进行几项更改,才能使用内置版本的System.ComponentModel.Composition编译和运行此示例。
t98cgbkg2#
目录零件目录现在称为DirectoryCatalog
7gcisfzg3#
我想,你是在寻找DirectoryCatalog