feat: 初始化NewLife Studio项目,完成基础框架与数据管理模块
何炳宏 authored at 2026-05-26 12:09:09
0.99 KiB
NewLife.Studio
namespace NewLife.Studio.Core;

/// <summary>全局服务定位器,用于模块访问 DI 容器中的服务</summary>
public static class StudioServices
{
    private static IServiceProvider? _serviceProvider;

    /// <summary>初始化服务定位器</summary>
    public static void Initialize(IServiceProvider serviceProvider)
    {
        _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
    }

    /// <summary>获取服务</summary>
    public static T? GetService<T>() where T : class
    {
        return _serviceProvider?.GetService(typeof(T)) as T;
    }

    /// <summary>获取必需服务</summary>
    public static T GetRequiredService<T>() where T : class
    {
        if (_serviceProvider == null)
            throw new InvalidOperationException("ServiceProvider not initialized");

        return (T)_serviceProvider.GetService(typeof(T))
            ?? throw new InvalidOperationException($"Service {typeof(T).Name} not registered");
    }
}