【发布时间】:2012-09-21 00:51:47
【问题描述】:
我正在使用 ClassDeclarationSyntax.AddMembers 方法将私有字段添加到类中。字段出现在类中,但我想知道如何将字段添加到特定位置。截至目前,它们被添加到 #if 指令内的类末尾,该指令在运行代码生成时恰好评估为 true。
运行代码:
var tree = SyntaxTree.ParseCompilationUnit(@"
namespace Test
{
public class A
{
#if !SILVERLIGHT
public int someField;
#endif
}
}");
var field =
Syntax.FieldDeclaration(
Syntax.VariableDeclaration(
Syntax.PredefinedType(
Syntax.Token(
SyntaxKind.StringKeyword))))
.WithModifiers(Syntax.Token(SyntaxKind.PrivateKeyword))
.AddDeclarationVariables(Syntax.VariableDeclarator("myAddedField"));
var theClass = tree.GetRoot().DescendantNodes()
.OfType<ClassDeclarationSyntax>().First();
theClass = theClass.AddMembers(field).NormalizeWhitespace();
System.Diagnostics.Debug.Write(theClass.GetFullText());
将导致:
public class A
{
#if !SILVERLIGHT
public int someField;
private string myAddedField;
#endif
}
我想得到这个结果:
public class A
{
private string myAddedField;
#if !SILVERLIGHT
public int someField;
#endif
}
【问题讨论】:
-
我没有看到你描述的行为。您能否向我们展示出现此问题的示例?
-
抱歉,解决了我的问题并添加了示例代码。