diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ImplementInterfaceAction.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ImplementInterfaceAction.cs index 915715cb52..d1a4abcd0e 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ImplementInterfaceAction.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ImplementInterfaceAction.cs @@ -101,7 +101,11 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring decl.Modifiers = Modifiers.None; decl.AddChild(builder.ConvertType(member.DeclaringType), EntityDeclaration.PrivateImplementationTypeRole); } else { - decl.Modifiers = Modifiers.Public; + if (member.IsProtected) { + decl.Modifiers = Modifiers.Protected; + } else { + decl.Modifiers = Modifiers.Public; + } } return decl; } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ImplementAbstractMembersTest.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ImplementAbstractMembersTest.cs index 9bf6d38732..f8e411b778 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ImplementAbstractMembersTest.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ImplementAbstractMembersTest.cs @@ -55,6 +55,33 @@ class Foo : Simple } #endregion } +"); + } + + [Test()] + public void TestProtectedMembers() + { + Test(@"abstract class Simple { + protected abstract string ServiceName { get; } +} + +class Foo : $Simple +{ +} +", @"abstract class Simple { + protected abstract string ServiceName { get; } +} + +class Foo : Simple +{ + #region implemented abstract members of Simple + protected override string ServiceName { + get { + throw new System.NotImplementedException (); + } + } + #endregion +} "); }