Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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
        }
Beispiel #3
0
        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);
        }