private void EnsureTransformers(IDocumentStore singleShardStore) { var catalog = new System.ComponentModel.Composition.Hosting.AssemblyCatalog(typeof(TransformerTest).Assembly); var container = new System.ComponentModel.Composition.Hosting.CompositionContainer(catalog); container.ComposeParts(); foreach (var task in container.GetExportedValues <AbstractTransformerCreationTask>()) { task.Execute(singleShardStore); } }
public static PluginHost Create() { var builder = new System.ComponentModel.Composition.Registration.RegistrationBuilder(); // addins builder .ForTypesDerivedFrom<IAddinContract>() //.Export<IAddinContract>() .ExportInterfaces() ; // host builder .ForType<PluginHost>() //.ImportProperty(x => x.Addins, b => b.AsMany()) .Export<PluginHost>() ; var hostCatalog = new System.ComponentModel.Composition.Hosting.AssemblyCatalog(typeof(PluginHost).Assembly, builder); var aCataog = new System.ComponentModel.Composition.Hosting.AggregateCatalog(hostCatalog); #if false var catalog = new System.ComponentModel.Composition.Hosting.DirectoryCatalog("addins"); aCataog.Catalogs.Add(catalog); #else foreach (var f in new DirectoryInfo("addins").GetFiles().Where(x => x.Name.ToLower().EndsWith(".dll"))) { var catalog = new System.ComponentModel.Composition.Hosting.AssemblyCatalog(Assembly.LoadFile(f.FullName), builder); aCataog.Catalogs.Add(catalog); } #endif var container = new System.ComponentModel.Composition.Hosting.CompositionContainer(aCataog); #if false var host = new PluginHost(); container.ComposeParts(host); return host; #else return container.GetExportedValue<PluginHost>(); #endif }
static public PluginHost Create() { var builder = new System.ComponentModel.Composition.Registration.RegistrationBuilder(); // addins builder .ForTypesDerivedFrom <IAddinContract>() //.Export<IAddinContract>() .ExportInterfaces() ; // host builder .ForType <PluginHost>() //.ImportProperty(x => x.Addins, b => b.AsMany()) .Export <PluginHost>() ; var hostCatalog = new System.ComponentModel.Composition.Hosting.AssemblyCatalog(typeof(PluginHost).Assembly, builder); var aCataog = new System.ComponentModel.Composition.Hosting.AggregateCatalog(hostCatalog); #if false var catalog = new System.ComponentModel.Composition.Hosting.DirectoryCatalog("addins"); aCataog.Catalogs.Add(catalog); #else foreach (var f in new DirectoryInfo("addins").GetFiles().Where(x => x.Name.ToLower().EndsWith(".dll"))) { var catalog = new System.ComponentModel.Composition.Hosting.AssemblyCatalog(Assembly.LoadFile(f.FullName), builder); aCataog.Catalogs.Add(catalog); } #endif var container = new System.ComponentModel.Composition.Hosting.CompositionContainer(aCataog); #if false var host = new PluginHost(); container.ComposeParts(host); return(host); #else return(container.GetExportedValue <PluginHost>()); #endif }
public void MefContainer_respects_shared_creation_policy() { // check that MEF respects the shared policy var mefCatalog = new System.ComponentModel.Composition.Hosting.AssemblyCatalog(typeof(DerivedService).Assembly); var mefContainer = new System.ComponentModel.Composition.Hosting.CompositionContainer(mefCatalog); // via GetExport var exp1 = mefContainer.GetExport <IBaseService>().Value; var exp2 = mefContainer.GetExport <IDerivedService>().Value; Assert.AreEqual(exp1.InstanceID, exp2.InstanceID); // via SatisfyImportsOnce var use1 = new UseBaseService(); mefContainer.SatisfyImportsOnce(use1); Assert.AreEqual(exp1.InstanceID, use1.Service.InstanceID); var use2 = new UseDerivedService(); mefContainer.SatisfyImportsOnce(use2); Assert.AreEqual(exp1.InstanceID, use2.Service.InstanceID); }