using Serein.Library;
using System;
namespace Serein.Library
{
///
/// 启动流程时,会将标记了该特性的类自动注册到IOC容器中,从而无需手动进行注册绑定。
/// 流程启动后,IOC容器会进行5次注册绑定。
/// 第1次注册绑定:初始化所有节点所属的类([DynamicFlow]标记的类)。
/// 第2次注册绑定:※初始化所有[AutoRegister(Class=FlowInit)]的类。
/// 第3次注册绑定:调用所有Init节点后,进行注册绑定。
/// 第4次注册绑定:※初始化所有[AutoRegister(Class=FlowLoading)]的类
/// 第5次注册绑定:调用所有Load节点后,进行注册绑定。
/// 需要注意的是,在第1次进行注册绑定的过程中,如果类的构造函数存在入参,那么也会将入参自动创建实例并托管到IOC容器中。
///
[AttributeUsage(AttributeTargets.Class)]
public sealed class AutoRegisterAttribute : Attribute
{
///
/// 自动注册特性
///
///
public AutoRegisterAttribute(RegisterSequence Class = RegisterSequence.FlowInit)
{
this.Class = Class;
}
///
/// 注册顺序
///
public RegisterSequence Class ;
}
}