如何用禁用符号分析器仅禁止IQueryable的同步物化方法?
仅禁用IQueryable的ToArray扩展方法是否可行?
这个需求完全可行,你可以通过精准配置BannedSymbols.txt文件,只针对IQueryable类型的ToArray扩展方法设置禁用规则,不会影响其他类型(比如IEnumerable)的ToArray调用。
具体配置步骤:
- 找到
IQueryable的ToArray扩展方法的符号ID,这个方法定义在System.Linq.Queryable类中,对应的符号格式为:
格式说明:M:System.Linq.Queryable.ToArray``1(System.Linq.IQueryable{``0})M:标识这是一个方法(Method)System.Linq.Queryable是方法所属的类ToArray``1表示这是一个带有1个泛型参数的泛型方法(System.Linq.IQueryable{``0})是方法的参数,```0对应泛型参数TSource`
- 将上述符号ID添加到你的
BannedSymbols.txt文件中,保存后分析器就会只拦截针对IQueryable调用的同步ToArray方法,而其他场景的ToArray仍可正常使用。
扩展说明:
如果需要禁用其他IQueryable的同步物化方法(比如ToDictionary),只需要找到对应方法的符号ID即可。例如ToDictionary的基础重载符号ID为:
M:System.Linq.Queryable.ToDictionary``2(System.Linq.IQueryable{``0},System.Func{``0,``1})
你可以通过查看.NET官方文档里的方法签名,确认目标方法的完整符号格式,保证禁用规则的精准性。
内容的提问来源于stack exchange,提问作者PaulVrugt
相关产品推荐
相关产品推荐

