调用Renderer.GetJsonOptionsForBlazor()抛出重复键ArgumentException异常原因排查
异常原因及解决方案
异常根源
这个System.ArgumentException(提示键重复)的核心原因是Highstock的.NET封装库在序列化ChartOptions到JSON时,处理PlotOptions的逻辑存在属性重复冲突:
- 你同时配置了
PlotOptions.Series和PlotOptions.Line节点,而PlotOptionsLine是PlotOptionsSeries的子类,两者包含大量重叠的通用属性(比如draggableY、color)。 - 当
GetJsonOptionsForBlazor()方法序列化时,会遍历这两个节点的所有属性并合并到同一个字典中,相同键的属性被重复添加,直接触发"键已存在"的异常。
临时修复方案
方案1:合并配置到子类节点
因为PlotOptionsLine继承了PlotOptionsSeries的所有属性,所以可以把Series中的配置直接移到Line节点里,删除Series节点:
PlotOptions = new PlotOptions { Line = new PlotOptionsLine { TurboThreshold = 10000, // 原Series中的配置移至此处 Marker = new PlotOptionsLineMarker { Radius = 2 }, LineWidth = 1, States = new PlotOptionsLineStates { Hover = new PlotOptionsLineStatesHover { LineWidth = 2 } }, Threshold = null } },
方案2:仅保留通用Series配置
如果需要给所有系列统一设置通用属性,只保留PlotOptions.Series节点,删除Line节点的重复配置,让Line系列自动继承Series的通用配置。
内容的提问来源于stack exchange,提问作者Anders Lindén
相关产品推荐
相关产品推荐

