我想通过使用分析器来改进我的旧代码,但我找不到的是“强制”异步使用的规则。
因此,调用ToList()而不是异步等效的ToListAsync()应该是一个警告。
public static TSource FirstOrDefault<TSource>(this IQueryable<TSource> source,
Expression<Func<TSource, bool>> predicate)
public static Task<TSource> FirstOrDefaultAsync<TSource>(
[NotNull] this IQueryable<TSource> source,
[NotNull] Expression<Func<TSource, bool>> predicate,
CancellationToken cancellationToken = default (CancellationToken))
因此,在firstOrDefault的情况下,如果存在Async扩展名,则应警告开发人员使用它。
PS1。谢谢你们在不理解我的问题甚至不问的情况下所做的所有事情。
PS2。选项1. https://github.com/Microsoft/vs-threading/blob/master/doc/analyzers/VSTHRD103.md
答案 0 :(得分:1)
虽然不是Roslyn Analyzer,但我使用了ReSharper的Async Converter插件(付费的Visual Studio扩展),该插件似乎符合您的Analyzer要求。它将按照惯例将同步方法重构为异步方法,并选择一个带有CancellationToken的方法重载(如果存在)。
图库链接:https://resharper-plugins.jetbrains.com/packages/AsyncConverter.AsyncConverter/