IStateParserFactory.cs 1.6 KB
using Rcs.Domain.Models.VDA5050;

namespace Rcs.Infrastructure.Mqtt.ParseFactory
{
    /// <summary>
    /// 状态解析器工厂接口
    /// </summary>
    public interface IStateParserFactory
    {
        /// <summary>
        /// 按制造商名称解析状态信息
        /// </summary>
        /// <param name="manufacturer">制造商名称</param>
        /// <param name="payload">JSON载荷</param>
        /// <returns>解析后的状态数据</returns>
        State? ParseState(string manufacturer, string payload);

        /// <summary>
        /// 注册指定制造商的状态解析器
        /// </summary>
        /// <param name="manufacturer">制造商名称</param>
        /// <param name="parser">解析委托</param>
        void RegisterStateParser(string manufacturer, Func<string, State?> parser);

        /// <summary>
        /// 是否支持指定制造商
        /// </summary>
        /// <param name="manufacturer">制造商名称</param>
        /// <returns>是否支持</returns>
        bool IsManufacturerSupported(string manufacturer);

        /// <summary>
        /// 获取所有已注册的制造商
        /// </summary>
        /// <returns>制造商名称列表</returns>
        IEnumerable<string> GetSupportedManufacturers();

        /// <summary>
        /// 手动刷新并重新注册解析器
        /// </summary>
        void RefreshParsers();

        /// <summary>
        /// 获取已注册解析器的详细信息
        /// </summary>
        /// <returns>制造商与类型信息映射</returns>
        Dictionary<string, string> GetRegisteredParsersInfo();
    }
}