c# - 从 Roslyn 中的方法符号生成方法签名的语法

标签 c# .net roslyn

我正在尝试使用 Roslyn(新用户)生成代码。我发现它太冗长了,我只能假设我做错了什么。目前,我正在为给定的 IMethodSymbol(来自接口(interface))生成一个方法的实现:

private static MethodDeclarationSyntax GetMethodDeclarationSyntax(IMethodSymbol methodSymbol)
{
    if (methodSymbol.MethodKind != MethodKind.Ordinary)
    {
        return null;
    }

    var parameters = methodSymbol
        .Parameters
        .Select(x => SF
            .Parameter(SF.Identifier(x.Name))
            .WithType(SF.IdentifierName(x.Type.ToDisplayString(symbolDisplayFormat))));

    return SF
        .MethodDeclaration(
            SF.IdentifierName(methodSymbol.ReturnType.ToDisplayString(symbolDisplayFormat)),
            SF.Identifier(methodSymbol.Name))
        .WithModifiers(
            SF.TokenList(
                SF.Token(SyntaxKind.PublicKeyword)))
        .WithParameterList(
            SF.ParameterList(
                SF.SeparatedList<ParameterSyntax>(parameters)));
}

它已经相当庞大了,我还没有考虑实际的实现、通用参数、ref/out 参数等等。

有没有更简单的方法来实现这一点?

最佳答案

对于 VS 2015 CTP 6 和 Roslyn 1.0-rc1 NuGet 包,请查看 SyntaxGenerator class .

关于c# - 从 Roslyn 中的方法符号生成方法签名的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29267922/

相关文章:

javascript - 将 JavaScript 变量添加到模型中

c# - 用于使用 C#、C++/CLI 和非托管 C++ 的应用程序的内存分析工具

c# - 使用 stub 和模拟进行单元测试

c# - 如何将 SoundEffectInstances 组合成新的声音文件/mp3 或 wav

c# - 向基于模型的列表添加值

c# - CLR 检测到无效程序

c# - 使用 roslyn 将鼠标悬停在源树符号的数据上

c# - 一次对 SyntaxTree 进行多项修改

c# - winforms .Net 关于小方法的使用

.net - 如何使用 Roslyn SDK 编译 .NET 解决方案