private static ExpressionSyntax BuildPropertyHashCodeCall(GeneratedPropertyInfo propertyInfo) { MemberAccessExpressionSyntax defaultComparer = DefaultEqualityComparer.AccessExpression(propertyInfo.Type); MemberAccessExpressionSyntax defaultGetHashCodeMethod = MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, defaultComparer, _getHashCodeIdentifier); MemberAccessExpressionSyntax fieldAccess = MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, ThisExpression(), IdentifierName(propertyInfo.Name)); InvocationExpressionSyntax getHashCodeCall = InvocationExpression(defaultGetHashCodeMethod).AddArgumentListArguments(Argument(fieldAccess)); return(getHashCodeCall); }
private static ExpressionSyntax BuildEqualityComparerEqualsCall(GeneratedPropertyInfo property) => InvocationExpression ( MemberAccessExpression ( SyntaxKind.SimpleMemberAccessExpression, DefaultEqualityComparer.AccessExpression(property.Type), IdentifierName(nameof(EqualityComparer <object> .Default.Equals)) ) ) .AddArgumentListArguments ( Argument(MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, ThisExpression(), IdentifierName(property.Name))), Argument(MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, IdentifierName(_otherArg), IdentifierName(property.Name))) );