PathResolver.cs 1.07 KB
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>
    /// 路径属性解析器 - 从Path相关对象获取属性值(预留)
    /// @author zzy
    /// </summary>
    public class PathResolver : IParameterValueResolver
    {
        public ParameterSourceType SourceType => ParameterSourceType.Path;

        public object? Resolve(ActionParameterDefinition definition, ParameterContext context)
        {
            // Path类型暂时从Extra字典中获取
            if (context.Extra == null || string.IsNullOrEmpty(definition.ParameterSourcePath))
                return definition.DefaultValue;

            if (context.Extra.TryGetValue("Path", out var pathObj) && pathObj != null)
            {
                var value = PropertyPathResolver.GetValue(pathObj, definition.ParameterSourcePath);
                return value ?? definition.DefaultValue;
            }

            return definition.DefaultValue;
        }
    }
}