c# - 检查 argumentSyntax 是否可以通过具有 IParameterSymbol 的方法调用

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

我有两种方法:

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.ClassifyConversionVisualBasicCompilation.ClassifyConversion来确定是否存在转换。请注意,这些方法是特定于语言的,因为每种语言都有一些独特的转换规则。

关于c# - 检查 argumentSyntax 是否可以通过具有 IParameterSymbol 的方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34411078/

相关文章:

C# 从 XML 中读取和存储数据

c# - 无法将方法添加到要在 InitializeComponent 期间调用的 Windows 窗体

visual-studio - 解决方案可以包含来自两个 TFS 集合的项目吗

c# - 是否可以使用源代码生成器来处理异常?

c# - 将文件/资源​​移动到 Visual Studio 中的 bin 文件夹

c# - 如何交换两个 SyntaxNode (Roslyn C#)

c# - 机器人计时器

c# - 经常调用的方法中的新临时变量

c# - Visual Basic 自动导入命名空间

c# - 如何解决私有(private)字节( native 内存)泄漏?