using DS.Module.Core.Extensions; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; namespace DS.Module.Core.Modules; /// /// IOC管理 /// public class DSIocManage { /// /// 服务提供者 /// private IServiceProvider _provider; /// /// 服务集合 /// private IServiceCollection _services; /// /// 创建懒加载Ioc管理实例 /// private static readonly Lazy DSInstanceLazy = new Lazy(() => new DSIocManage()); /// /// 构造方法 /// private DSIocManage() { } public static DSIocManage Instance => DSInstanceLazy.Value; /// /// 设置应用程序服务提供者 /// internal void SetApplicationServiceProvider(IServiceProvider provider) { provider.NotNull(nameof(provider)); _provider = provider; } /// /// 设置应用程序服务集合 /// public void SetServiceCollection(IServiceCollection services) { services.NotNull(nameof(services)); _services = services; } /// /// 得到服务 /// /// /// public T GetService() { _provider.NotNull(nameof(_provider)); _services.NotNull(nameof(_services)); return _provider.GetService(); } /// /// 得到日志记录 /// /// /// public ILogger GetLogger() { ILoggerFactory factory = _provider.GetService(); return factory.CreateLogger(); } }