Example #1
0
 protected static StatementSyntax GetConstructorAssignmentStatement(
     SourceProperty p,
     TypeSyntax constructorType,
     SimpleNameSyntax sourceObjectVariableName
     ) => p.GetAssignmentStatement(
     ObjectCreationExpression(constructorType)
     .AddArgumentListArguments(
         Argument(p.GetAccessExpression(sourceObjectVariableName))));
Example #2
0
 protected static StatementSyntax GetSourceMethodCallAssignmentStatement(
     SourceProperty p,
     SimpleNameSyntax sourceObjectVariableName,
     string methodName
     ) => p.GetAssignmentStatement(
     InvocationExpression(
         MemberAccessExpression(
             SyntaxKind.SimpleMemberAccessExpression,
             p.GetAccessExpression(sourceObjectVariableName),
             IdentifierName(methodName))));
Example #3
0
 protected static StatementSyntax GetTargetMethodCallAssignmentStatement(
     SourceProperty p,
     SimpleNameSyntax sourceObjectVariableName,
     string methodName
     ) => ExpressionStatement(
     InvocationExpression(
         MemberAccessExpression(
             SyntaxKind.SimpleMemberAccessExpression,
             p.Name,
             IdentifierName(methodName)))
     .AddArgumentListArguments(Argument(p.GetAccessExpression(sourceObjectVariableName))));
Example #4
0
 protected SimpleNameSyntax GetArrayTypeName(SourceProperty p)
 {
     if (p.TypeSymbol is IArrayTypeSymbol arrayType)
     {
         if (arrayType.ElementType is INamedTypeSymbol n && n.TypeArguments.Any())
         {
             return(GenericName(n.Name)
                    .AddTypeArgumentListArguments(
                        n.TypeArguments.Select(arg => IdentifierName(arg.Name)).ToArray()));
         }
         else
         {
             return(IdentifierName(arrayType.ElementType.Name));
         }
     }
Example #5
0
 internal static PropertyRule GetRule(SourceProperty p)
 => Rules.First(r => r.CanHandle(p));
Example #6
0
 public abstract StatementSyntax GetAssignmentStatement(
     AssignmentTarget target,
     SourceProperty p,
     IdentifierNameSyntax sourceObjectVariableName);
Example #7
0
 protected PropertyDeclarationSyntax GetReadonlyPropertyDeclaration(SourceProperty p, ExpressionSyntax initializer) =>
 p.GeneratePropertyDeclarationBase(GetBuilderPropertyType(p))
 .WithInitializer(EqualsValueClause(initializer))
 .WithSemicolonToken(Token(SyntaxKind.SemicolonToken));
Example #8
0
 protected virtual PropertyDeclarationSyntax GenerateBuilderPropertyDeclaration(SourceProperty p) =>
 p.GeneratePropertyDeclarationBase(GetBuilderPropertyType(p))
 .AddAccessorListAccessors(
     AccessorDeclaration(SyntaxKind.SetAccessorDeclaration).WithSemicolonToken(Token(SyntaxKind.SemicolonToken)));
Example #9
0
 public virtual IEnumerable <PropertyDeclarationSyntax> GenerateBuilderPropertyDeclarations(SourceProperty p) =>
 new[] { GenerateBuilderPropertyDeclaration(p) };
Example #10
0
 public abstract TypeSyntax GetBuilderPropertyType(SourceProperty p);
Example #11
0
 public abstract bool CanHandle(SourceProperty p);