Beispiel #1
0
        private static PropertyDeclarationSyntax ReplaceMethodWithProperty(MethodDeclarationSyntax methodDeclaration, string propertyName)
        {
            SyntaxToken identifier = Identifier(propertyName).WithTriviaFrom(methodDeclaration.Identifier);

            ParameterListSyntax parameterList = methodDeclaration.ParameterList;

            if (parameterList?.IsMissing == false)
            {
                identifier = identifier.AppendTrailingTrivia(
                    parameterList.OpenParenToken.GetLeadingAndTrailingTrivia().Concat(
                        parameterList.CloseParenToken.GetLeadingAndTrailingTrivia()));
            }

            if (methodDeclaration.ExpressionBody != null)
            {
                return(PropertyDeclaration(
                           methodDeclaration.AttributeLists,
                           methodDeclaration.Modifiers,
                           methodDeclaration.ReturnType,
                           methodDeclaration.ExplicitInterfaceSpecifier,
                           identifier,
                           default(AccessorListSyntax),
                           methodDeclaration.ExpressionBody,
                           default(EqualsValueClauseSyntax),
                           methodDeclaration.SemicolonToken));
            }
            else
            {
                return(PropertyDeclaration(
                           methodDeclaration.AttributeLists,
                           methodDeclaration.Modifiers,
                           methodDeclaration.ReturnType,
                           methodDeclaration.ExplicitInterfaceSpecifier,
                           identifier,
                           CreateAccessorList(methodDeclaration)));
            }
        }