我在这个问题中看到的操作员解析遇到了麻烦(看看这个.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
->SourceUserDefinedOperatorSymbol
GetSymbolInfo
->SynthesizedIntrinsicOperatorSymbol
通缉(预期)
GetDeclaredSymbol
->SynthesizedIntrinsicOperatorSymbol
GetSymbolInfo
->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
}
}