TaskResolver.cs 863 Bytes
using Rcs.Domain.Entities;
using Rcs.Domain.Enums;
using Rcs.Domain.Models;
using Rcs.Domain.Services;
using Rcs.Shared.Utils;

namespace Rcs.Infrastructure.Services.ParameterResolvers
{
    /// <summary>
    /// 任务属性解析器 - 从Task对象获取属性值
    /// @author zzy
    /// </summary>
    public class TaskResolver : IParameterValueResolver
    {
        public ParameterSourceType SourceType => ParameterSourceType.Task;

        public object? Resolve(ActionParameterDefinition definition, ParameterContext context)
        {
            if (context.Task == null || string.IsNullOrEmpty(definition.ParameterSourcePath))
                return definition.DefaultValue;

            var value = PropertyPathResolver.GetValue(context.Task, definition.ParameterSourcePath);
            return value ?? definition.DefaultValue;
        }
    }
}