using Demo.Models; namespace Demo.Features; /// /// 抽象功能类 /// public abstract class Feature { /// /// 执行顺序 /// public int Order { get; init; } public bool Finished { get; protected set; } public string Name { get; init; } = String.Empty; public abstract void Execute(IMetadata metadata); public virtual ValueTask ExecuteAsync(IMetadata metadata) { Execute(metadata); return ValueTask.CompletedTask; } public virtual void OnException(FeatureExceptionContext context) { throw context.Exception; } public virtual ValueTask OnExceptionAsync(FeatureExceptionContext context) { throw context.Exception; } } public delegate void FeatureFunction(Feature feature, IMetadata metadata); public delegate ValueTask FeatureFunctionAsync(Feature feature, IMetadata metadata);