我通过扩展方法获得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
}
答案 0 :(得分:2)
您在这里需要符号。
从ParameterSyntax
p,使用SemanticModel.GetDeclaredSymbol
获取IParameterSymbol
,然后查看其Type
以获取您感兴趣的ITypeSymbol
。