IParameterValueResolverFactory.cs 1.35 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; }
}