Я пытаюсь написать метод, который будет создавать экземпляр объекта, являющегося свойством
Я придумал что-то вроде этих строк:
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)))
)));
}
Но это генерирует следующееcode:
ObjectTest test = newObjectTest
{
prop1 = random.Next(0, 2) == 0 ,
prop2 = Guid.NewGuid().ToString() ,
prop3 = random.Next(0, 100)}
;
Есть небольшая проблема с этим ... Но по-мужски тот факт, что новое ключевое слово пропускает пробел после, хотя я добавил мелочи?Я бы хотел, чтобы он генерировал что-то вроде этого:
ObjectTest test = new ObjectTest
{
prop1 = random.Next(0, 2) == 0,
prop2 = Guid.NewGuid().ToString(),
prop3 = random.Next(0, 100)
};
Я не знаю, чего мне не хватает ... Я поместил код, который он должен сгенерировать, в Roslyn Quoter И это дало мне что-то вроде первой ссылки!Также я попытался использовать метод NormalizeWhiteSpace () в LocalDeclarationStatement, но он форматирует инициализацию объекта следующим образом:
ObjectTest test = new ObjectTest{
prop1 = random.Next(0, 2) == 0, prop2 = Guid.NewGuid().ToString(), prop3 = random.Next(0, 100)};