【发布时间】:2020-10-23 09:08:32
【问题描述】:
假设我有一个带有一些通用方法的接口,比如说这个:
public interface IService
{
Task DoGenericAsync<T>();
}
然后我有一堆项目的一些解决方案,我有以下参考资料:
class SomeDomainService
{
private readonly IService _service;
public Task Process()
=> _service.DoGenericAsync<A>();
}
现在的目标是找到这个方法的所有调用以及更重要的——具体的泛型参数是什么。在这种特殊情况下,我想发现 IService.DoGenericAsync<T>() 是使用泛型参数 <A> 调用的。
因此,按照那里的几个教程和问题,我可以使用 Roslyn 找到对目标方法的所有引用,方法是找到我的接口方法声明的 ISymbol,然后调用 SymbolFinder.FindReferencesAsync 以获取所有引用。
这很好用,我得到了正确的调用位置(ReferencedSymbol 实例的集合,但是这些结果的Definition 属性只返回了符号的一般信息(嗯,完全是定义:)),所以我如何找出实际的论点是什么?
【问题讨论】:
标签: c# generics roslyn roslyn-code-analysis