Core/OmnishellFactory.cs
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; public static class OmnishellFactory<ServiceConfigurationType> where ServiceConfigurationType : ServiceConfiguration { private static Lazy<IHost> lazyHost = new Lazy<IHost>(HostFactory); private static IHost HostFactory() { ServiceConfiguration configuration = Activator.CreateInstance<ServiceConfigurationType>(); IHost host = Host.CreateDefaultBuilder() .ConfigureServices(configuration.ServiceCollection) .Build(); return host; } public static T2 Build<T2>() { return lazyHost.Value.Services.GetService<T2>(); } } |