从对象初始化器表达式语法为 属性 个初始化器生成代码
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)
{
...
}
更新:需要这个的原因是我需要创建复杂的对象,像文档对象模型一样深度嵌套。我不知道是否所有属性都已初始化,真的想看看我是否错过了 属性,特别是在深度嵌套时。
换句话说,我需要查看完整的对象树是否已经初始化,或者我在某处遗漏了 属性。
我们可以使用 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)
{
...
}