/// <summary> /// 执行注册到指定时间点的所有能力代码 /// </summary> /// <param name="timePoint">目标时间点</param> /// <param name="parameter">执行参数</param> /// <returns></returns> public static ExecuteInformation Execute(ExecuteTimePoint timePoint, params object[] parameter) { var answer = new ExecuteInformation(0, true, parameter); lock (CodeList) { var list = GenerateExexcuteList(timePoint); var count = list.Count - 1; for (var i = 0; i <= count; i++) { answer = list[i].Execute(i == 0 ? null : list[i - 1], i == count ? null : list[i + 1], answer); if (answer.RemoveAfterExecute) CodeList.Remove(list[i]); } } return answer; }
internal override ExecuteInformation Execute(Code previousCode, Code nextCode, ExecuteInformation parameter) { throw new NotImplementedException(); }
/// <summary> /// 执行能力代码 /// </summary> /// <param name="previousCode">执行链上的前一个能力代码</param> /// <param name="nextCode">执行链上的后一个能力代码</param> /// <param name="parameter">执行信息</param> /// <returns></returns> internal abstract ExecuteInformation Execute(Code previousCode, Code nextCode, ExecuteInformation parameter);
/// <summary> /// 立即执行指定能力代码 /// </summary> /// <param name="code">目标能力代码</param> /// <param name="parameter">执行信息</param> /// <returns></returns> public static ExecuteInformation Execute(Code code, ExecuteInformation parameter) { RegisterCode(code); return Execute(ExecuteTimePoint.Now, parameter.ExecuteParameter); }