如何在参数列表中获取参数的完全限定类型

本文关键字:参数 类型 获取 列表 | 更新日期: 2023-09-27 18:37:28

我正在尝试为我们的开发团队编写一个实用程序,该实用程序将生成单元测试以至少强制执行代码覆盖率。我正在使用 Roslyn 来检查他们编写的代码,以便为数据库访问等内容生成存根。

例如,我有以下函数,我正在尝试为其生成单元测试:

public DiaryDro GetDiaryById(long id)
{
    return Translator.EntityToDro(_repository.FindOne<Diary>(id));
}

我可以找到并使用我需要的一切,包括模拟我们的存储库,因为它是一个类级变量,所以这很容易完成。我还可以模拟翻译器,并为EntityToDro生成存根。我遇到的问题是,我不知道如何告诉传递给 EntityToDro 函数的参数。

使用 Roslyn,我可以访问包含 return 行的 InvoExpressionSyntax,并且它有一个字段ArgumentList,我甚至可以混淆我的方式找到它正在得到一个Diary,但我需要完全限定的名称,因为我们有不止一种类型的Diary

有什么办法可以做到这一点,或者我不能从这里到达那里?

如何在参数列表中获取参数的完全限定类型

若要获取类型信息,需要查询语义模型:

document.GetSemanticModel().GetTypeInfo(expression)