/// <summary> /// Ensures the Container has been instantiated/re-instantiated if the Composer has been modified. /// </summary> private void EnsureContainer() { if (modified || Container == null) { if (Container != null) { Container.Dispose(); } Container = new CompositionContainer(Catalog, ExportProviders.ToArray()); foreach (var provider in postContainerModifiers.Keys) { postContainerModifiers[provider](provider, Container); } Container.ComposeExportedValue(this); modified = false; } }
private MefContainer() { if (modified || _container == null) { if (_container != null) { _container.Dispose(); } var extensionsFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty; extensionsFolder = Path.Combine(extensionsFolder, "Extensions"); var catalog = new AggregateCatalog( new AssemblyCatalog(Assembly.GetExecutingAssembly()), new AssemblyCatalog(Assembly.GetAssembly(typeof(DatabaseConnection))) ); if (Directory.Exists(extensionsFolder)) { catalog.Catalogs.Add(new DirectoryCatalog(extensionsFolder)); } if (Directory.Exists(extensionsFolder + "/HRM")) { catalog.Catalogs.Add(new DirectoryCatalog(extensionsFolder + "/HRM")); } #if SAMPLE_EXTENSIONS var samples = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty; samples = Path.Combine(samples, "OpenCBS.Extensions.Samples.dll"); if (File.Exists(samples)) { catalog.Catalogs.Add(new AssemblyCatalog(samples)); } #endif _container = new CompositionContainer(catalog, ExportProviders.ToArray()); modified = false; } }