检查argumentSyntax是否有效,可以使用具有IParameterSymbol的方法调用

时间:2015-12-22 08:04:11

标签: c# visual-studio roslyn roslyn-code-analysis

我有两种方法:

<Grid DataContext="{Binding Source={StaticResource wrapper}, Path=DataProvider}" >
...
</Grid>

和2个课程:

public void Method1(object[] args); // In Class A
public void Method2(string a, SomeClass b); // In Class B

我使用Roslyn分析的代码:

public class SomeClass {}
public class FromSomeClass : SomeClass {}

我想分析Method1 Call并检查它是否也是一个有效的Method2 Call,意思是:

var c = new FromSomeClass();
Method1("a", c);

我到了从语义模型(IParameterSymbol)获得Method2的地步 对于调用中的每个参数,我都有ITypeSymbol。 如何检查参数类型是否对此IParameterSymbol有效? (继承和隐式转换)?

1 个答案:

答案 0 :(得分:2)

您可以致电CSharpCompilation.ClassifyConversionVisualBasicCompilation.ClassifyConversion来确定转换是否存在。请注意,这些方法是特定于语言的,因为每种语言都有一些独特的转换规则。