IParameterValueResolverFactory.cs 1.51 KB
using System.Collections.Generic;
using Rcs.Domain.Entities;
using Rcs.Domain.Enums;
using Rcs.Domain.Models;

namespace Rcs.Domain.Services
{
    /// <summary>
    /// 参数值解析器工厂接口
    /// @author zzy
    /// </summary>
    public interface IParameterValueResolverFactory
    {
        /// <summary>
        /// 解析单个参数值
        /// </summary>
        /// <param name="definition">参数定义</param>
        /// <param name="context">解析上下文</param>
        /// <returns>解析后的参数值</returns>
        object? Resolve(ActionParameterDefinition definition, ParameterContext context);

        /// <summary>
        /// 批量解析动作的所有参数
        /// </summary>
        /// <param name="definitions">参数定义列表</param>
        /// <param name="context">解析上下文</param>
        /// <returns>参数键值对列表</returns>
        List<ResolvedParameter> ResolveAll(IEnumerable<ActionParameterDefinition> definitions, ParameterContext context);
    }

    /// <summary>
    /// 解析后的参数
    /// @author zzy
    /// </summary>
    public class ResolvedParameter
    {
        /// <summary>
        /// 参数名称
        /// </summary>
        public string Key { get; set; } = string.Empty;

        /// <summary>
        /// 参数值
        /// </summary>
        public string Value { get; set; } = string.Empty;

        /// <summary>
        /// 参数值类型
        /// </summary>
        public ParameterValueType ValueType { get; set; }
    }
}