我正在尝试编写一种方法,该方法将实例化给定为property的对象
我想出了一些类似的话:
public static LocalDeclarationStatementSyntax GetVariableWithDeclarationWithInitialization(string pVariableType, string pVariableName, InitializerExpressionSyntax pInitializer)
{
return SyntaxFactory.LocalDeclarationStatement(SyntaxFactory.VariableDeclaration(SyntaxFactory.IdentifierName(pVariableType)).WithTrailingTrivia(SyntaxFactory.Space)
.WithVariables(SyntaxFactory.SingletonSeparatedList(SyntaxFactory.VariableDeclarator(SyntaxFactory.Identifier(pVariableName))
.WithInitializer(SyntaxFactory.EqualsValueClause(SyntaxFactory.ObjectCreationExpression(SyntaxFactory.IdentifierName(pVariableType)
.WithInitializer(pInitializer)))
)));
}
但这会生成以下代码:
ObjectTest test = newObjectTest
{
prop1 = random.Next(0, 2) == 0 ,
prop2 = Guid.NewGuid().ToString() ,
prop3 = random.Next(0, 100)}
;
这有一些问题... 但是,男子气概的事实是,即使我添加了一个琐事,new关键字也会缺少一个空格? 我希望它生成如下内容:
ObjectTest test = new ObjectTest
{
prop1 = random.Next(0, 2) == 0,
prop2 = Guid.NewGuid().ToString(),
prop3 = random.Next(0, 100)
};
我不知道我想念的是什么...我把它应该生成的代码放在 Roslyn Quoter 它给了我一些类似于第一个链接的东西! 我也尝试过在LocalDeclarationStatement上使用NormalizeWhiteSpace()方法,但是它像这样格式化对象Initalization:
ObjectTest test = new ObjectTest{
prop1 = random.Next(0, 2) == 0, prop2 = Guid.NewGuid().ToString(), prop3 = random.Next(0, 100)};
答案 0 :(得分:0)
尝试使用WithLeadingTrivia
代替WithTrailingTrivia
(当然,如果有这种方法的话)。
我想您只是在Type名称之后添加了一个空格(而不是new
关键字之后)