38 lines
1.1 KiB
C#
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);
|
|
}
|
|
}
|
|
} |