using Demo.Models; namespace Demo.Features; /// /// 默认的功能类,做委托容器用 /// /// public sealed class DefaultFeature : Feature where TMetadata : IMetadata { 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(TMetadata metadata) { _executeFunction?.Invoke(this, metadata); } public override async ValueTask ExecuteAsync(TMetadata metadata) { if (_executeFunctionAsync is not null) { await _executeFunctionAsync.Invoke(this, metadata); } } }