private static ContainerConfig GetContainerConfig(string configurationFilePath) { if (_config != null) return _config; try { _config = File.Exists(configurationFilePath) ? JsonConvert.DeserializeObject<ContainerConfig>(File.ReadAllText(configurationFilePath)).Verify() : new ContainerConfig(); } catch { _log.Warn($"Error reading container configuration file: {configurationFilePath}"); _config = new ContainerConfig(); } return _config; }
/// <summary> /// Creates a composition container using the specified catalog. /// </summary> /// <param name="catalog">The catalog.</param> /// <param name="assemblyPath">The assembly path.</param> /// <returns>A composition container instance.</returns> public static IContainer Create(ComposablePartCatalog catalog, string assemblyPath = null) { ContainerConfig configuration = null; if (!string.IsNullOrWhiteSpace(assemblyPath)) { var fullPath = Path.Combine(assemblyPath, ConfigurationPath, ContainerConfigurationFileName); var configuredCatalog = new ConfiguredCatalog(catalog, fullPath); catalog = configuredCatalog; configuration = configuredCatalog.Configuration; } var container = new CompositionContainer(catalog, true); var instance = new Container(container, configuration); container.ComposeExportedValue <IContainer>(instance); return(instance); }
/// <summary> /// Initializes a new instance of the <see cref="Container"/> class. /// </summary> /// <param name="container">The container.</param> /// <param name="configuration">The container configuration.</param> internal Container(CompositionContainer container, ContainerConfig configuration = null) { _container = container; Configuration = configuration ?? new ContainerConfig(); }