diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/OverrideToStringCompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/OverrideToStringCompletionData.cs index 911ea59cfe..dcdc3a5491 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/OverrideToStringCompletionData.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/OverrideToStringCompletionData.cs @@ -138,6 +138,7 @@ namespace CSharpBinding.Completion } foreach (var p in sourceType.GetProperties().Where(prop => prop.CanGet && !prop.IsIndexer + && prop.IsAutoImplemented() && prop.IsStatic == sourceType.GetDefinition().IsStatic && prop.ReturnType != null)) { yield return new PropertyOrFieldWrapper(p) { Index = i }; diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorSnippetRefactoring.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorSnippetRefactoring.cs index e7d203cae9..1e7a849b59 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorSnippetRefactoring.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorSnippetRefactoring.cs @@ -83,6 +83,7 @@ namespace CSharpBinding.Refactoring } foreach (var p in resolvedSourceType.GetProperties().Where(prop => prop.CanSet && !prop.IsIndexer + && prop.IsAutoImplemented() && prop.IsStatic == sourceType.IsStatic && prop.ReturnType != null)) { yield return new PropertyOrFieldWrapper(p) { Index = i }; diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/RefactoringExtensions.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/RefactoringExtensions.cs new file mode 100644 index 0000000000..b24086bb6a --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/RefactoringExtensions.cs @@ -0,0 +1,30 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; +using ICSharpCode.NRefactory.TypeSystem; + +namespace CSharpBinding.Refactoring +{ + /// + /// Some extensions related to refactoring features. + /// + public static class RefactoringExtensions + { + /// + /// Checks whether a property is auto-implemented (has only "get; set;" definitions). + /// + /// Property to check + /// True if auto-implemented, false otherwise. + public static bool IsAutoImplemented(this IProperty property) + { + if (property == null) + throw new ArgumentNullException("property"); + + if (property.IsAbstract) + return false; + + return property.CanGet && !property.Getter.HasBody && property.CanSet && !property.Setter.HasBody; + } + } +}