应用程序
Application
是CatLib程序的核心,也是所谓的程序入口。应用程序通过引导来加载服务提供者和其他一些必须的资源。应用程序在一般情况下只允许启动一个,且只能在主线程中启动。
在任何位置,您可以通过App
全局变量访问应用程序。
启动流程
Application.Bootstrap
-> Application.Register
-> Application.Init
Application.Bootstrap
一般用于引导注册服务提供者,初始配置或者一些其他资源。Application.Register
用于注册服务提供者到框架。Application.Init
激活所有服务提供者的Init函数
,并完成框架初始化。
建议的调用结构:
- Application.Bootstrap - - Application.Register - - #... more - Application.Init
生命周期创建框架实例
引导程序引导程序必须继承自 public class BootstrapDebug : IBootstrap { public void Bootstrap() { Console.WriteLine("hello debug"); } } application.Bootstrap(new BootstrapDebug()); // 输出: hello debug
注册服务提供者通过 public class ProviderDebug : IServiceProvider { public void Init(){ } public void Register() { Console.WriteLine("hello register"); } } application.Register(new ProviderDebug()); // 输出:hello register // App.Register(new ProviderNetwork()); // 还可以使用App全局变量来进行注册。 初始化框架调用 public class ProviderFileSystem : IServiceProvider { public void Init() { Console.WriteLine("hello init [ProviderFileSystem]"); } public void Register() { Console.WriteLine("hello register [ProviderFileSystem]"); } } public class ProviderDebug : IServiceProvider { public void Init() { Console.WriteLine("hello init [ProviderDebug]"); } public void Register() { Console.WriteLine("hello register [ProviderDebug]"); } } application.Register(new ProviderDebug()); // 输出:hello register [ProviderDebug] application.Register(new ProviderFileSystem()); // 输出:hello register [ProviderFileSystem] application.Init(); // 输出:hello init [ProviderDebug] // 输出:hello init [ProviderFileSystem] 终止应用程序当程序退出时,您需要调用 下面的事件已经内嵌到应用程序内,满足条件时会自动触发,事件名都被放在 关于事件系统,详细文档请参考:事件系统 var dispatcher = App.Make<IEventDispatcher>(); dispatcher.AddListener(ApplicationEvents.OnStartCompleted, ()=>{ // todo: });
当框架被新创建时通过 App.OnNewApplication += (app)=>{ // todo: };
设定框架的调试等级您可以通过 App.DebugLevel = DebugLevels.Production; // Production,Staging,Development
获取运行期间的唯一Id在应用程序生命周期内,您可以使用 int rid = App.GetRuntimeId(); 判断服务是否被注册通过 App.IsRegistered(new ProviderFileSystem()); // return false 是否在主线程中执行您可以通过 App.IsMainThread;
获取当前框架的版本通过 string version = App.Version; 比较框架版本某些场景需要比较当前运行时的框架版本,这时您可以通过 // App.Version 2.0.0 App.Compare("1.2.3"); // return 1 App.Compare("2.2.3"); // return -1 |