服务提供者

服务提供者是组件CatLib联系的桥梁。同时也是CatLib启动的中心,所有的服务都是通过服务提供者定义的。

名词定义

CatLib架构图

实现服务提供者

您的服务提供者类必须继承自CatLib.IServiceProvider类 , 所有的服务提供者包含 Register()Init() 2个方法。

Register()方法中,你唯一要做的事情就是绑定服务实现到服务容器,不要尝试在其中执行任何其它功能。因为很有可能你就使用了一个没有被注册的服务。

当服务提供者的Init()方法被触发时,就意味着框架所有的服务提供者的Register()都已经被执行,也就是说我们可以在Init()中访问其他服务提供者所提供的服务。

using CatLib;
public class ConfigProvider : IServiceProvide
{
public void Init()
{
// 初始化
}
public void Register()
{
// 注册服务
}
}

注册服务提供者

注册了服务提供者并不意味着服务都会被立即实例化,通常情况下很多是延迟实例化的,只有真的用到它们的时候才会实例化。

如果框架使用者想要使用某个服务,那么必须先对这个服务进行注册。

App.Register(new ConfigProvider());

初始化优先级

您可以通过配置启动优先级来调整服务提供者启动流程的启动顺序,注意CatLib中的所有的优先级特性都是采用就近原则的。即为函数标记的优先级特性将会优先于类的优先级特性。

using CatLib;
[Priority(200)]
public class ConfigProvider : IServiceProvide
{
[Priority(100)]
public void Init()
{
// Init 的启动优先级会使用100而不是200 , 由于就近原则
}
public void Register()
{
// 注册服务
}
}

关于更多优先级相关资料,请参考:优先级