Beispiel #1
0
 static MemberDeclarationSyntax IConvertibleConvertToSyntax(this PrimitiveDescriptor descriptor, TypeSyntax returnType, string name)
 => MethodDeclaration(returnType, Identifier(name))
 .WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword)))
 .WithParameterList(
     ParameterList(
         SingletonSeparatedList(
             Parameter(Identifier("provider"))
             .WithType(descriptor.TryWrapInNullableTypeSyntax(IdentifierName("IFormatProvider"))))))
 .WithExpressionBody(
     ArrowExpressionClause(
         InvocationExpression(
             MemberAccessExpression(
                 SyntaxKind.SimpleMemberAccessExpression,
                 IdentifierName("Convert"),
                 IdentifierName(name)))
         .WithArgumentList(
             ArgumentList(
                 SeparatedList <ArgumentSyntax>(
                     new SyntaxNodeOrToken[]
 {
     Argument(
         MemberAccessExpression(
             SyntaxKind.SimpleMemberAccessExpression,
             ThisExpression(),
             IdentifierName(descriptor.InnerName))),
     Token(SyntaxKind.CommaToken),
     Argument(IdentifierName("provider"))
 })))))
 .WithSemicolonToken(Token(SyntaxKind.SemicolonToken));
Beispiel #2
0
 public static MemberDeclarationSyntax EqualsSyntax(this PrimitiveDescriptor descriptor)
 => MethodDeclaration(PredefinedType(Token(SyntaxKind.BoolKeyword)), Identifier("Equals"))
 .WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword), Token(SyntaxKind.OverrideKeyword)))
 .WithParameterList(
     ParameterList(
         SingletonSeparatedList(
             Parameter(Identifier("obj"))
             .WithType(descriptor.TryWrapInNullableTypeSyntax(PredefinedType(Token(SyntaxKind.ObjectKeyword)))))))
 .WithExpressionBody(
     ArrowExpressionClause(
         BinaryExpression(
             SyntaxKind.LogicalAndExpression,
             IsPatternExpression(
                 IdentifierName("obj"),
                 DeclarationPattern(
                     IdentifierName(descriptor.Name),
                     SingleVariableDesignation(Identifier("value")))),
             InvocationExpression(IdentifierName("Equals"))
             .WithArgumentList(ArgumentList(SingletonSeparatedList(Argument(IdentifierName("value"))))))))
 .WithSemicolonToken(Token(SyntaxKind.SemicolonToken));
Beispiel #3
0
 public static MemberDeclarationSyntax IConvertibleToTypeSyntax(this PrimitiveDescriptor descriptor)
 => MethodDeclaration(PredefinedType(Token(SyntaxKind.ObjectKeyword)), Identifier("ToType"))
 .WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword)))
 .WithParameterList(
     ParameterList(
         SeparatedList <ParameterSyntax>(
             new SyntaxNodeOrToken[]
 {
     Parameter(Identifier("conversionType"))
     .WithType(IdentifierName("Type")),
     Token(SyntaxKind.CommaToken),
     Parameter(Identifier("provider"))
     .WithType(descriptor.TryWrapInNullableTypeSyntax(IdentifierName("IFormatProvider")))
 })))
 .WithExpressionBody(
     ArrowExpressionClause(
         InvocationExpression(
             MemberAccessExpression(
                 SyntaxKind.SimpleMemberAccessExpression,
                 IdentifierName("Convert"),
                 IdentifierName("ChangeType")))
         .WithArgumentList(
             ArgumentList(
                 SeparatedList <ArgumentSyntax>(
                     new SyntaxNodeOrToken[]
 {
     Argument(
         MemberAccessExpression(
             SyntaxKind.SimpleMemberAccessExpression,
             ThisExpression(),
             IdentifierName(descriptor.InnerName))),
     Token(SyntaxKind.CommaToken),
     Argument(IdentifierName("conversionType")),
     Token(SyntaxKind.CommaToken),
     Argument(IdentifierName("provider"))
 })))))
 .WithSemicolonToken(Token(SyntaxKind.SemicolonToken));