You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过BannedApiAnalyzers仅禁止Dictionary索引器的setter?

仅禁用Dictionary索引器Setter的BannedApiAnalyzers配置方法

要单独禁止Dictionary<TKey,TValue>的索引器赋值操作(即dictionary[key] = value;),同时保留索引器的读取功能,你需要在BannedSymbols.txt中使用索引器Setter对应的元数据方法符号,并严格遵循格式要求:

正确配置步骤

  1. 打开项目中的BannedSymbols.txt文件
  2. 添加以下内容(符号行和警告消息行要一一对应):
    M:System.Collections.Generic.Dictionary`2.set_Item(`0,`1)
    请勿使用索引器setter;请使用Add()或扩展方法Replace()明确表达意图。极少数需添加或替换的场景,请使用扩展方法AddOrReplace()。
    

为什么之前的配置无效?

  • 使用P:System.Collections.Generic.Dictionary2.Item(0)会禁用整个索引器属性,导致读取(get)和赋值(set)操作都被禁止,不符合你的需求。
  • 之前的M:System.Collections.Generic.Dictionary2.set_Item(0,1)配置未生效,大概率是符号格式细节出错:泛型参数标记 2(表示该类型有2个泛型参数)、参数列表的(0,1)`(对应TKey和TValue类型)必须严格匹配元数据写法,不能有拼写或格式错误。

配置完成后重新编译项目,当开发者编写dictionary[key] = value;这类代码时,就会触发你指定的警告提示,而索引器的读取操作(如var val = dictionary[key];)不会受到影响。

内容的提问来源于stack exchange,提问作者Mike Nakis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 14:22:08