从对象初始化器表达式语法为 属性 个初始化器生成代码

Generating code for property initialisers from an object InitializerExpressionSyntax

更新:需要这个的原因是我需要创建复杂的对象,像文档对象模型一样深度嵌套。我不知道是否所有属性都已初始化,真的想看看我是否错过了 属性,特别是在深度嵌套时。

换句话说,我需要查看完整的对象树是否已经初始化,或者我在某处遗漏了 属性。

我们可以使用 Roslyn 仅从代码生成对象 InitializerExpressionSyntax 吗?不要像 post 中那样尝试反编译对象:

它适用于 complex/nested 个对象吗?

编写程序或使用T4模板从代码生成代码。

var code = @"public partial class Abc { public string AAA { get; set; } }";
var syntaxTree = CSharpSyntaxTree.ParseText(code);
var syntax = (CompilationUnitSyntax)syntaxTree.GetRoot();

var @class = syntax.ChildNodes().OfType<ClassDeclarationSyntax>().First();
var properties = @class.ChildNodes().OfType<PropertyDeclarationSyntax>();
foreach (var property in properties)
{
    ...
}