diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/LanguageProperties.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/LanguageProperties.cs index 685bd16cde..3f8bb56263 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/LanguageProperties.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/LanguageProperties.cs @@ -169,6 +169,15 @@ namespace ICSharpCode.SharpDevelop.Dom } } + /// + /// Gets if events explicitly implementing an interface require add {} remove {} regions. + /// + public virtual bool RequiresAddRemoveRegionInExplicitInterfaceImplementation { + get { + return false; + } + } + /// /// Gets the token that denotes a possible beginning of an indexer expression. /// @@ -241,6 +250,15 @@ namespace ICSharpCode.SharpDevelop.Dom } } + /// + /// Gets if events explicitly implementing an interface require add {} remove {} regions. + /// + public override bool RequiresAddRemoveRegionInExplicitInterfaceImplementation { + get { + return true; + } + } + public override string ToString() { return "[LanguageProperties: C#]"; diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Refactoring/CodeGenerator.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Refactoring/CodeGenerator.cs index 28ea7f15b0..e5f4221c29 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Refactoring/CodeGenerator.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Refactoring/CodeGenerator.cs @@ -453,6 +453,13 @@ namespace ICSharpCode.SharpDevelop.Dom.Refactoring EventDeclaration ed = ConvertMember(e, context); if (explicitImpl) { ed.InterfaceImplementations.Add(new InterfaceImplementation(interfaceReference, ed.Name)); + + if (context.ProjectContent.Language.RequiresAddRemoveRegionInExplicitInterfaceImplementation) { + ed.AddRegion = new EventAddRegion(null); + ed.AddRegion.Block = CreateNotImplementedBlock(); + ed.RemoveRegion = new EventRemoveRegion(null); + ed.RemoveRegion.Block = CreateNotImplementedBlock(); + } } ed.Modifier = modifier; nodes.Add(ed);