我在这个问题中看到的操作员解析遇到了麻烦(看看这个.NET fiddle)。
总之,我有如下代码:
bool a = 3 > 5;
namespace System
{
public struct Int32
{
public static extern bool operator > (int a, int b);
}
public struct Boolean { }
}
但是当我GetDeclaredSymbol在操作符的声明中IMethodSymbol使用它时,它给了我与在第一行(bool a = 3 > 5;)中使用它时不同的情况。
我一直在寻找一种类似的方法,GetDeclaredSymbol但它会生成代码中使用的与声明中相同的符号。
实际的
GetDeclaredSymbol->SourceUserDefinedOperatorSymbolGetSymbolInfo->SynthesizedIntrinsicOperatorSymbol
通缉(预期)
GetDeclaredSymbol->SynthesizedIntrinsicOperatorSymbolGetSymbolInfo->SynthesizedIntrinsicOperatorSymbol
基本上,我需要一种SourceUserDefinedOperatorSymbol将SynthesizedIntrinsicOperatorSymbol.
例如。
public static IMethodSymbol GetDeclaredSymbol (OperatorDeclarationSyntax ods)
{
IMethodSymbol opSym = model.GetDeclaredSymbol(ods) ?? throw E;
if (opSym is SourceUserDefinedOperatorSymbol)
{
// convert it to a SynthesizedIntrinsicOperatorSymbol instead
}
}