ChipDemo/Core/Features/DefaultFeature.cs

37 lines
984 B
C#

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