【问题标题】:Checking if argumentSyntax is valid to be invoked with a method that has IParameterSymbol检查 argumentSyntax 是否有效以使用具有 IParameterSymbol 的方法调用
【发布时间】:2015-12-30 06:06:51
【问题描述】:

我有两种方法:

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

还有 2 个类:

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

以及我使用 Roslyn 分析的代码:

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

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

Method2("a", c); // will this run ok?

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 2019-05-13
      • 2014-12-09
      • 2019-06-06
      • 1970-01-01
      • 2011-01-16
      相关资源
      最近更新 更多