using System; using System.Threading.Tasks; using TinaX.Container; using TinaX.Services; using UnityEngine; namespace TinaX { public interface IXCore { #region Infos GameObject BaseGameObject { get; } string LocalStoragePath_TinaX { get; } string LocalStoragePath_App { get; } string FrameworkVersionName { get; } bool IsRunning { get; } string ProfileName { get; } bool DevelopMode { get; } #endregion IServiceContainer Services { get; } ICommandLineArgs CommandLineArgs { get; } /// /// Register a "TinaX Service Provider". /// 注册 TinaX 服务提供者 /// /// /// IXCore RegisterServiceProvider(IXServiceProvider provider); #region Dependency Injection | 依赖注入 /// ///Get Service | 获取服务 /// /// /// /// TService GetService(params object[] userParams); /// /// Get Service | 获取服务 /// /// /// /// object GetService(Type type, params object[] userParams); bool TryGetService(out TService service, params object[] userParams); bool TryGetService(Type type, out object service, params object[] userParams); /// /// Bind Service. | 绑定服务 /// /// 服务接口 /// void BindService(); /// /// Bind a global singleton Service. | 绑定全局单例服务。 /// /// /// void BindSingletonService(); bool TryGetBuiltinService(out TBuiltInInterface service) where TBuiltInInterface : IBuiltInService; IXCore ConfigureServices(Action options); void InjectObject(object obj); #endregion #region Exceptions | 异常处理 IXCore OnServicesInitException(Action callback); IXCore OnServicesStartException(Action callback); #endregion #region Domain object CreateInstance(Type type, params object[] args); #endregion Task RunAsync(); void RunAsync(Action finishCallback); Task CloseAsync(); object CreateInstanceAndInject(Type type); } }