IVisualizationParserFactory.cs 1.65 KB
using Rcs.Domain.Models.VDA5050;

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

        /// <summary>
        /// 注册指定制造商的可视化解析器
        /// </summary>
        /// <param name="manufacturer">制造商名称</param>
        /// <param name="parser">解析委托</param>
        void RegisterVisualizationParser(string manufacturer, Func<string, Visualization?> 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();
    }
}