Roslyn - SyntaxGenerator,生成AutoProperty

时间:2018-01-28 05:59:25

标签: c# roslyn

以某种方式可以使用Roslyn SyntaxGenerator类(非SyntaxFactory)生成自动属性吗?

此:

var myProperty = generator.PropertyDeclaration("MyProperty", generator.TypeExpression(SpecialType.System_String), Accessibility.Public);

将生成:

public string MyProperty {
            get {
            }

            set {
            }
        }

我想:

public string MyProperty { get; set; }

这可能有一些选择吗?我找到了一些使用SyntaxFactory的解决方案,但我想使用SyntaxGenerator

1 个答案:

答案 0 :(得分:1)

我认为这是不可能的。

如果您查看PropertyDeclaration的source,您会注意到,除非未声明getter / setter或属性为abstract,否则将任何传递为null的getAccessorStatements / setAccessorStatements设置为空的IEnumerable。 / p>

然后,访问器语句的生成使用AccessorDeclaration,它将使用正文返回访问器(如果访问器声明为null)或者使用分号返回(如果它不是null,则只能将抽象属性作为如上所述)。

github上似乎还有一个开放的issue