public override ExpressionSyntax ConvertToExpression(Type type, object obj, SourceCodeSerializer serializer) { var properties = GetProperties(type); var propertyNodes = properties.Select(property => { var value = property.GetValue(obj); var expression = serializer.GetExpression(value); if (expression == null) { return(null); } var assignment = AssignmentExpression(SyntaxKind.SimpleAssignmentExpression, IdentifierName(property.Name), expression); if (serializer.Settings.ObjectInitializationNewLine) { return(assignment.WithLeadingTrivia(TriviaList(LineFeed))); } else { return(assignment); } }).Where(prop => prop != null); return(ObjectCreationExpression(serializer.GetTypeName(obj.GetType())) .WithInitializer( InitializerExpression(SyntaxKind.ObjectInitializerExpression, SeparatedList <ExpressionSyntax>(propertyNodes)))); }
public override ExpressionSyntax ConvertToExpression(Type type, IEnumerable collection, SourceCodeSerializer serializer) { var arrayType = GetGenericParameter(type); var generic = collection.Cast <object>(); var items = generic.Select(item => serializer.GetExpression(item).WithLeadingTrivia(TriviaList(LineFeed))); return(ArrayCreationExpression( ArrayType(serializer.GetTypeName(arrayType), SingletonList(ArrayRankSpecifier(SingletonSeparatedList <ExpressionSyntax>(OmittedArraySizeExpression()))))) .WithInitializer(InitializerExpression(SyntaxKind.ArrayInitializerExpression, SeparatedList(items)))); }