private void CreateStatement(CSharpElementFactory factory, ICSharpExpression expression) { var statement = (IExpressionStatement)factory.CreateStatement("'__' = expression;"); var propertyDeclaration = factory.CreatePrivatePropertyDeclaration(Context.Type, Context.SuggestedPropertyName); 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, expression); 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 <IIntroduceFromParameterLanguageHelper>( Context.Parameter.PresentationLanguage); if (languageHelper == null) { return; } var anchorInitializationAnchorMember = GetAnchorInitializationAnchorMember(Context.ConstructorDeclaration); languageHelper.AddAssignmentToBody(Context.ConstructorDeclaration, anchorInitializationAnchorMember, false, Context.Parameter, propertyDeclaration.DeclaredName); }
private void CreateStatement(CSharpElementFactory factory, ICSharpExpression expression, IPsiSourceFile sourceFile) { var statement = (IExpressionStatement) factory.CreateStatement("'__' = expression;"); var propertyDeclaration = factory.CreatePrivatePropertyDeclaration(Context.Type, Context.SuggestedPropertyName); 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<IIntroducePrivatePropertyFromParameterLanguageHelper>( Context.Parameter.PresentationLanguage); if (languageHelper == null) return; var anchorInitializationAnchorMember = GetAnchorInitializationAnchorMember(Context.ConstructorDeclaration); languageHelper.AddAssignmentToBody(Context.ConstructorDeclaration, anchorInitializationAnchorMember, false, Context.Parameter, propertyDeclaration.DeclaredElement); }