无法有效地将 class 添加到 Roslyn 中的命名空间
Cannot effectively add class to namespace in Roslyn
我正在使用 Roslyn 2.0 和 SyntaxFactory
生成 SyntaxTree
:
var namespaceNode = SyntaxFactory.NamespaceDeclaration(
SyntaxFactory.ParseName("Root.MyNamespace1"));
var classNode = SyntaxFactory.ClassDeclaration("MyClass");
namespaceNode.AddMembers(classNode);
缺少成员
似乎一切正常,但是当我通过调用 namespaceNode.ToString()
检查调试器对象 namespaceNode
时,我得到:
namespaceRoot.MyNamespace1{}
每次我在 SyntaxNode
上使用 ToString
它通常会发出打印代码,所以我很确定这里的问题是命名空间是空的。 class 不存在,即使我调用了 AddMembers
.
命名空间中没有成员!我做错了什么?
当我写这篇文章时:
namespaceNode.AddMembers(classNode);
我在我的 Visual Studio 2017 社区中收到一条警告,解释了正在发生的事情:
RS1014 'NamespaceDeclarationSyntax' is immutable and 'AddMembers' will not have any effect on it. Consider using the return value from 'AddMembers'.
所以你必须
namespaceNode = namespaceNode.AddMembers(classNode);
我正在使用 Roslyn 2.0 和 SyntaxFactory
生成 SyntaxTree
:
var namespaceNode = SyntaxFactory.NamespaceDeclaration(
SyntaxFactory.ParseName("Root.MyNamespace1"));
var classNode = SyntaxFactory.ClassDeclaration("MyClass");
namespaceNode.AddMembers(classNode);
缺少成员
似乎一切正常,但是当我通过调用 namespaceNode.ToString()
检查调试器对象 namespaceNode
时,我得到:
namespaceRoot.MyNamespace1{}
每次我在 SyntaxNode
上使用 ToString
它通常会发出打印代码,所以我很确定这里的问题是命名空间是空的。 class 不存在,即使我调用了 AddMembers
.
命名空间中没有成员!我做错了什么?
当我写这篇文章时:
namespaceNode.AddMembers(classNode);
我在我的 Visual Studio 2017 社区中收到一条警告,解释了正在发生的事情:
RS1014 'NamespaceDeclarationSyntax' is immutable and 'AddMembers' will not have any effect on it. Consider using the return value from 'AddMembers'.
所以你必须
namespaceNode = namespaceNode.AddMembers(classNode);