public static void Populate(this IUnityContainer container, IServiceCollection services) { container.AddExtension(new EnumerableResolutionExtension()); container.RegisterInstance(services); container.RegisterType<IServiceProvider, UnityServiceProvider>(); container.RegisterType<IServiceScopeFactory, UnityServiceScopeFactory>(); foreach (var descriptor in services) { Register(container, descriptor); } }
internal static void SetHeaders(this Bundle.BundleEntryResponseComponent interaction, WebHeaderCollection headers) { foreach (var key in headers.AllKeys) { interaction.AddExtension(EXTENSION_RESPONSE_HEADER, new FhirString(key + ":" + headers[key])); } }
/// <summary> /// /// </summary> /// <param name="observable"></param> /// <param name="name"></param> /// <param name="options"></param> /// <returns></returns> public static Observable ExtendWith(this Observable observable, string name, string options) { observable.AddExtension(name, options); return observable; }
/// <summary> /// Enables Managed Extensibility Framework two-way integration. /// </summary> /// <param name="unityContainer">Target container.</param> /// <returns> /// <see cref="CompositionIntegration"/> instance. /// </returns> public static CompositionIntegration EnableCompositionIntegration( this IUnityContainer unityContainer) { lock (unityContainer) { var extension = unityContainer.Configure<CompositionIntegration>(); if (extension == null) { var adapter = new UnityContainerAdapter(unityContainer); var containerExportProvider = new ContainerExportProvider(adapter); var parentExtension = (CompositionIntegration) null; if (unityContainer.Parent != null) { parentExtension = unityContainer.Parent.Configure<CompositionIntegration>(); } if (parentExtension != null) { // Get the parent ContainerExportProvider var parentContainerExportProvider = (ContainerExportProvider)parentExtension.Providers.Where( ep => typeof(ContainerExportProvider).IsAssignableFrom(ep.GetType())).First(); // Collect all the exports provided by the parent container and add // them to the child export provider foreach (var definition in parentContainerExportProvider.RegistrationBasedFactoryExportProvider.ReadOnlyDefinitions) { containerExportProvider.RegistrationBasedFactoryExportProvider.Register( definition.ContractType, definition.RegistrationName); } // Grab all the parent export providers except the container ones var parentExporters = new List<ExportProvider>( parentExtension.Providers.Where( ep => !typeof (ContainerExportProvider).IsAssignableFrom(ep.GetType()))) { containerExportProvider }; var catalog = new AggregateCatalog(parentExtension.Catalogs); extension = new CompositionIntegration(true, parentExporters.ToArray()); extension.Catalogs.Add(catalog); } else { extension = new CompositionIntegration(true, containerExportProvider); } unityContainer.AddExtension(extension); } return extension; } }