我有两种方法:
public void Method1(object[] args); // In Class A
public void Method2(string a, SomeClass b); // In Class B
还有 2 个类(class):
public class SomeClass {}
public class FromSomeClass : SomeClass {}
以及我使用 Roslyn 分析的代码:
var c = new FromSomeClass();
Method1("a", c);
我想分析 Method1 调用并检查它是否也是有效的 Method2 调用,意思是:
Method2("a", c); // will this run ok?
我已经从语义模型(IParameterSymbol)中得到了 Method2 对于调用中的每个参数,我都有 ITypeSymbol。 如何检查参数类型对于此 IParameterSymbol 是否有效? (继承和隐式转换)?
最佳答案
您可以调用CSharpCompilation.ClassifyConversion
或VisualBasicCompilation.ClassifyConversion
来确定是否存在转换。请注意,这些方法是特定于语言的,因为每种语言都有一些独特的转换规则。
关于c# - 检查 argumentSyntax 是否可以通过具有 IParameterSymbol 的方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34411078/