如何用roslyn找到MethodDeclaractionSyntax的system.Type参数类型?

时间:2016-05-07 13:01:02

标签: c# roslyn

我通过扩展方法获得IL方法:

public static byte[] getIL(this Type t,string nameOfMethod)
{
    MethodBody mb=t.GetMethods(BindingFalgs...).Where(m=>m.Name ==nameOfMethod ).Single();
    return mb.GetMethodBody().GetIlAsByteArray();
}

因为我的解决方案有Overload(同名)方法,所以我得到了异常(有多个)。

所以我需要使用下面需要Type []的方法。

//this will replace in above method
m.GetMethod("NameOfMethod",ArrayTypeOfParameter);

但是如何从TypeSyntax中获取Type?

public override SyntaxNode VisitMethodDeclarationSyntax(MethodDeclarationSyntax m)
 {
 foreach(ParameterSyntax p in m.ParameterList.Parameters)
   {
       TypeSyntax t=p.Type;
      //how get system.Type here
 }

1 个答案:

答案 0 :(得分:2)

您在这里需要符号

ParameterSyntax p,使用SemanticModel.GetDeclaredSymbol获取IParameterSymbol,然后查看其Type以获取您感兴趣的ITypeSymbol