Exemple #1
0
        protected virtual CompositionContainer CreateCompositionContainer(IEnumerable <ComposablePartCatalog> catalogItems = default(IEnumerable <ComposablePartCatalog>))
        {
            var catalog = new AggregateCatalog();

            if (catalogItems != default(IEnumerable <ComposablePartCatalog>))
            {
                catalogItems.ForEach(item =>
                {
                    catalog.Catalogs.Add(item);
                });
            }
            catalog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
            string binPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin");

            if (!Directory.Exists(binPath))
            {
                Directory.CreateDirectory(binPath);
            }
            catalog.Catalogs.Add(new DirectoryCatalog(binPath));

            string basePath = AppDomain.CurrentDomain.BaseDirectory;

            basePath = basePath.Remove(basePath.Length - 1, 1);
            catalog.Catalogs.Add(new DirectoryCatalog(basePath));

            //catalog.Catalogs.Add(new DirectoryCatalog(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Comp")));

            //var config = CompositionConfigurationSection.GetInstance();
            //if (config != null && config.Catalogs != null)
            //{
            //    config.Catalogs
            //        .Cast<CatalogConfigurationElement>()
            //        .ForEach(c =>
            //        {
            //            if (!string.IsNullOrEmpty(c.Path))
            //            {
            //                string path = c.Path;
            //                if (path.StartsWith("~"))
            //                    path = MapPath(path);

            //                foreach (var directoryCatalog in GetDirectoryCatalogs(path))
            //                {

            //                    // Register our path for probing.
            //                    RegisterPath(directoryCatalog.FullPath);

            //                    // Add the catalog.
            //                    catalog.Catalogs.Add(directoryCatalog);
            //                }
            //            }
            //        });
            //}

            var provider  = new DynamicInstantiationExportProvider();
            var container = new CompositionContainer(catalog, provider);

            provider.SourceProvider = container;

            return(container);
        }
Exemple #2
0
        protected virtual CompositionContainer CreateCompositionContainer(IEnumerable<ComposablePartCatalog> catalogItems = default (IEnumerable<ComposablePartCatalog>))
        {
            var catalog = new AggregateCatalog();
            if (catalogItems != default(IEnumerable<ComposablePartCatalog>))
            {
                catalogItems.ForEach(item =>
                {
                    catalog.Catalogs.Add(item);
                });
            }
            catalog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
            string binPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin");
            if (!Directory.Exists(binPath))
            {
                Directory.CreateDirectory(binPath);
            }
            catalog.Catalogs.Add(new DirectoryCatalog(binPath));

            string basePath = AppDomain.CurrentDomain.BaseDirectory;
            basePath = basePath.Remove(basePath.Length - 1, 1);
            catalog.Catalogs.Add(new DirectoryCatalog(basePath));

            //catalog.Catalogs.Add(new DirectoryCatalog(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Comp")));

            //var config = CompositionConfigurationSection.GetInstance();
            //if (config != null && config.Catalogs != null)
            //{
            //    config.Catalogs
            //        .Cast<CatalogConfigurationElement>()
            //        .ForEach(c =>
            //        {
            //            if (!string.IsNullOrEmpty(c.Path))
            //            {
            //                string path = c.Path;
            //                if (path.StartsWith("~"))
            //                    path = MapPath(path);

            //                foreach (var directoryCatalog in GetDirectoryCatalogs(path))
            //                {

            //                    // Register our path for probing.
            //                    RegisterPath(directoryCatalog.FullPath);

            //                    // Add the catalog.
            //                    catalog.Catalogs.Add(directoryCatalog);
            //                }
            //            }
            //        });
            //}

            var provider = new DynamicInstantiationExportProvider();
            var container = new CompositionContainer(catalog, provider);
            provider.SourceProvider = container;

            return container;
        }