如何在ArgumentList中获得完全限定类型的参数?

时间:2015-01-14 20:14:03

标签: c# roslyn

我试图为我们的开发团队编写一个实用程序,它将生成单元测试,以至少强制执行代码覆盖。我使用Roslyn检查他们编写的代码,以便为DB访问等事件生成存根。

例如,我有以下函数我正在尝试为:

生成单元测试
public DiaryDro GetDiaryById(long id)
{
    return Translator.EntityToDro(_repository.FindOne<Diary>(id));
}

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

使用Roslyn,我可以访问其中包含return行的InvocationExpressionSyntax,它有一个字段ArgumentList,我甚至可以浑浑噩噩地找到它#&获得Diary,但我需要完全限定名称,因为我们有多种Diary

有没有办法做到这一点,或者我不能从这里到达那里?

1 个答案:

答案 0 :(得分:1)

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

document.GetSemanticModel().GetTypeInfo(expression)