У меня есть 2 метода:
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 и проверить, является ли он также допустимым вызовом Method2, что означает:
Method2("a", c); // will this run ok?
Я дошел до того, что получил Method2 из семантической модели (IParameterSymbol) и для каждого аргумента в вызове у меня есть ITypeSymbol. Как проверить, допустим ли тип аргумента для этого символа IParameterSymbol? (как наследование, так и неявное преобразование)?