Exemplo n.º 1
0
        public static IClassMemberDeclaration CreatePropertyDeclaration(this CSharpElementFactory factory,
                                                                        IType typeExpression, string memberName, bool isReadOnly, AccessRights accessRights)
        {
            var declaration = factory.CreatePropertyDeclaration(typeExpression, memberName);

            declaration.SetAccessRights(accessRights);
            declaration.WithPrivateGetter(factory);
            if (!isReadOnly)
            {
                declaration.WithPrivateSetter(factory);
            }
            return(declaration);
        }
            protected override IClassMemberDeclaration CreateMemberDeclaration(CSharpElementFactory factory)
            {
                var declaration = factory.CreatePropertyDeclaration(ExpressionType, "__");
                declaration.SetAccessRights(AccessRights.PUBLIC);
                var getter = factory.CreateAccessorDeclaration(AccessorKind.GETTER, false);
                var setter = factory.CreateAccessorDeclaration(AccessorKind.SETTER, false);

                declaration.AddAccessorDeclarationAfter(getter, null);
                declaration.AddAccessorDeclarationBefore(setter, null);
                declaration.SetStatic(IsStatic);

                return declaration;
            }
            protected override IClassMemberDeclaration CreateMemberDeclaration(CSharpElementFactory factory)
            {
                var declaration = factory.CreatePropertyDeclaration(ExpressionType, "__");

                declaration.SetAccessRights(AccessRights.PUBLIC);
                var getter = factory.CreateAccessorDeclaration(AccessorKind.GETTER, withBody: false);
                var setter = factory.CreateAccessorDeclaration(AccessorKind.SETTER, withBody: false);

                declaration.AddAccessorDeclarationAfter(getter, null);
                declaration.AddAccessorDeclarationBefore(setter, null);
                declaration.SetStatic(IsStatic);

                return(declaration);
            }
Exemplo n.º 4
0
        public static IClassMemberDeclaration CreatePrivatePropertyDeclaration(this CSharpElementFactory factory,
                                                                               IType typeExpression, string memberName)
        {
            var declaration = factory.CreatePropertyDeclaration(typeExpression, memberName);

            declaration.SetAccessRights(AccessRights.PRIVATE);
            var getter = factory.CreateAccessorDeclaration(AccessorKind.GETTER, false);
            var setter = factory.CreateAccessorDeclaration(AccessorKind.SETTER, false);

            declaration.AddAccessorDeclarationAfter(getter, null);
            declaration.AddAccessorDeclarationBefore(setter, null);

            return(declaration);
        }
Exemplo n.º 5
0
        private void CreateStatement(CSharpElementFactory factory, ICSharpExpression expression,
                                     IPsiSourceFile sourceFile, AccessRights accessRights)
        {
            var statement           = (IExpressionStatement)factory.CreateStatement("'__' = expression;");
            var propertyDeclaration = factory.CreatePropertyDeclaration(Context.Type,
                                                                        Context.SuggestedPropertyName, IsReadOnly, accessRights);
            var assignment = (IAssignmentExpression)statement.Expression;

            assignment.SetSource(expression);
            var psiServices       = expression.GetPsiServices();
            var suggestionManager = psiServices.Naming.Suggestion;
            var classDeclaration  = Context.ParameterDeclaration.GetContainingNode <IClassDeclaration>().NotNull();

            var suggestion = suggestionManager.CreateEmptyCollection(
                PluralityKinds.Unknown, expression.Language, true, sourceFile);

            suggestion.Add(expression, new EntryOptions
            {
                SubrootPolicy          = SubrootPolicy.Decompose,
                PredefinedPrefixPolicy = PredefinedPrefixPolicy.Remove
            });

            suggestion.Prepare(propertyDeclaration.DeclaredElement, new SuggestionOptions
            {
                UniqueNameContext = (ITreeNode)classDeclaration.Body ?? classDeclaration
            });

            propertyDeclaration.SetName(suggestion.FirstName());

            var memberAnchor = GetAnchorMember(classDeclaration.MemberDeclarations.ToList());

            classDeclaration.AddClassMemberDeclarationAfter(propertyDeclaration, (IClassMemberDeclaration)memberAnchor);

            var languageHelper =
                LanguageManager.Instance.TryGetService <IIntroducePropertyFromParameterLanguageHelper>(
                    Context.Parameter.PresentationLanguage);

            if (languageHelper == null)
            {
                return;
            }

            var anchorInitializationAnchorMember = GetAnchorInitializationAnchorMember(Context.ConstructorDeclaration);

            languageHelper.AddAssignmentToBody(Context.ConstructorDeclaration, anchorInitializationAnchorMember, false,
                                               Context.Parameter, propertyDeclaration.DeclaredElement);
        }