Roslyn:获取格式化方法 signature/declaration
Roslyn: Get formatted method signature/declaration
我有 MethodDeclarationSyntax
或 IMethodSymbol
,但我找不到任何方法,如何访问格式化的方法名称:
namespace XXX.YYY.ZZZ
{
public class MyClass
{
public void MyMethod()
{
}
}
}
但我只能访问格式如下的文本:
public System.Void XXX.YYY.ZZZ.MyClass.MyMethod()
我看到了一些 Formatter.Format
的例子。但他们都需要 document/workspace 等,我对基于解决方案或 VS 设置的可调整格式不感兴趣,但对方法签名的简单通用 C# 通用格式不感兴趣:
public void MyMethod()
在其他情况下与参数非常相似:
public System.Void XXX.YYY.ZZZ.MyClass.MyMethod(System.Sting myString, System.Int
index)
在 Roslyn 中有什么方法可以做到这一点吗?
似乎诀窍在于 Roslyn 对象在调试模式下显示的内容与它们通过 ToString() 方法实际提供的内容之间的区别。
有时名称空间是标识符名称输出的一部分,但大多数情况下不是,但对象表示在调试模式下可能会产生误导。
最好的方法是首先通过 ToString 或其他方式获取字符串,即使变量、字段或常量在调试模式下显示为其他内容时也是如此:)。
我有 MethodDeclarationSyntax
或 IMethodSymbol
,但我找不到任何方法,如何访问格式化的方法名称:
namespace XXX.YYY.ZZZ
{
public class MyClass
{
public void MyMethod()
{
}
}
}
但我只能访问格式如下的文本:
public System.Void XXX.YYY.ZZZ.MyClass.MyMethod()
我看到了一些 Formatter.Format
的例子。但他们都需要 document/workspace 等,我对基于解决方案或 VS 设置的可调整格式不感兴趣,但对方法签名的简单通用 C# 通用格式不感兴趣:
public void MyMethod()
在其他情况下与参数非常相似:
public System.Void XXX.YYY.ZZZ.MyClass.MyMethod(System.Sting myString, System.Int
index)
在 Roslyn 中有什么方法可以做到这一点吗?
似乎诀窍在于 Roslyn 对象在调试模式下显示的内容与它们通过 ToString() 方法实际提供的内容之间的区别。
有时名称空间是标识符名称输出的一部分,但大多数情况下不是,但对象表示在调试模式下可能会产生误导。
最好的方法是首先通过 ToString 或其他方式获取字符串,即使变量、字段或常量在调试模式下显示为其他内容时也是如此:)。