ChipDemo/Core/Features/DefaultFeature.cs

38 lines
1.1 KiB
C#

using Demo.Models;
namespace Demo.Features;
/// <summary>
/// 默认的功能类,做委托容器用
/// </summary>
/// <typeparam name="TMetadata"></typeparam>
public sealed class DefaultFeature<TMetadata> : Feature<TMetadata>
where TMetadata : IMetadata
{
public DefaultFeature(string name, FeatureFunction<TMetadata>? executeFunction = null,
FeatureFunctionAsync<TMetadata>? executeFunctionAsync = null,
int order = 1)
{
_executeFunction = executeFunction;
_executeFunctionAsync = executeFunctionAsync;
Name = name;
Order = order;
}
private readonly FeatureFunction<TMetadata>? _executeFunction;
private readonly FeatureFunctionAsync<TMetadata>? _executeFunctionAsync;
public override void Execute(TMetadata metadata)
{
_executeFunction?.Invoke(this, metadata);
}
public override async ValueTask ExecuteAsync(TMetadata metadata)
{
if (_executeFunctionAsync is not null)
{
await _executeFunctionAsync.Invoke(this, metadata);
}
}
}