ChipDemo/Core/Features/Feature.cs

43 lines
1.1 KiB
C#
Raw Normal View History

2023-04-07 22:10:35 +08:00
using Demo.Models;
namespace Demo.Features;
/// <summary>
/// 抽象功能类
/// </summary>
public abstract class Feature<TMetadata>
where TMetadata : IMetadata
{
/// <summary>
/// 执行顺序
/// </summary>
public int Order { get; init; }
public bool Finished { get; protected set; }
public string Name { get; init; } = String.Empty;
public abstract void Execute(TMetadata metadata);
public virtual ValueTask ExecuteAsync(TMetadata metadata)
{
Execute(metadata);
return ValueTask.CompletedTask;
}
public virtual void OnException(FeatureExceptionContext<TMetadata> context)
{
throw context.Exception;
}
public virtual ValueTask OnExceptionAsync(FeatureExceptionContext<TMetadata> context)
{
throw context.Exception;
}
}
public delegate void FeatureFunction<TMetadata>(Feature<TMetadata> feature, TMetadata metadata)
where TMetadata : IMetadata;
public delegate ValueTask FeatureFunctionAsync<TMetadata>(Feature<TMetadata> feature, TMetadata metadata)
where TMetadata : IMetadata;