更新:需要这个的原因是我需要创建复杂的对象,深度嵌套像文档对象模型。我不知道是否所有属性都已初始化,真的想看看我是否错过了一个属性,特别是在深度嵌套时。
换句话说,我需要查看完整的对象树是否已经初始化,或者我错过了某处的属性。
我们可以使用Roslyn仅从代码生成对象InitializerExpressionSyntax吗?不要像在这篇文章中那样尝试反编译对象:Can Roslyn generate source code from an object instance?
它适用于复杂/嵌套对象吗?
答案 0 :(得分:0)
编写程序或使用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)
{
...
}