ReSharper 2020.2 Help

Convert Interface to Abstract Class refactoring

ReSharper | Refactor | Convert | Method to Indexer…
ReSharper_Function2Indexer

This refactoring converts interfaces into abstract classes thus helping you quickly change hierarchical dependency among a set of classes and interfaces.

Consider the following example:

interface Shape { double Area { get; } void Draw(); } class Circle : Shape { private readonly int radius; public double Area => Math.PI * Math.Pow(radius, 2); public void Draw() { //do something } }
abstract class Shape { public abstract double Area { get; } public abstract void Draw(); } class Circle : Shape { private readonly int radius; public override double Area => Math.PI * Math.Pow(radius, 2); public override void Draw() { //do something } }

Convert an interface into an abstract class

  1. Select an interface in one of the following ways:

    • In the editor, set the caret at the name of an interface.

    • Select an interface in the Solution Explorer.

    • Select an interface in the File Structure window.

    • Select an interface in the Class View.

    • Select an interface in the Object Browser.

    • Select an interface in the type dependency diagram.

  2. Do one of the following:

    • Press Control+Shift+R and then choose Convert Interface to Abstract Class

    • Right-click and choose Refactor | Convert Interface to Abstract Class in the context menu.

    • Choose ReSharper | Refactor | Convert | Method to Indexer… in the main menu.

  3. If no conflicts are found, ReSharper performs the refactoring immediately. Otherwise, it prompts you to resolve conflicts.

This feature is supported in the following languages and technologies:

Language: C#Language: VB.NETLanguage: C++Language: HTMLLanguage: ASP.NETLanguage: RazorLanguage: JavaScriptLanguage: TypeScriptLanguage: CSSLanguage: XMLLanguage: XAMLLanguage: ResxLanguage: Build ScriptsLanguage: ProtobufLanguage: JSON
Feature is available in C#Feature is available in Visual Basic .NETFeature is not available in C++Feature is not available in HTMLFeature is not available in ASP.NETFeature is not available in RazorFeature is not available in JavaScriptFeature is not available in TypeScriptFeature is not available in CSSFeature is not available in XMLFeature is not available in XAMLFeature is not available in Resource filesFeature is not available in build script filesFeature is not available in ProtobufFeature is not available in JSON

The instructions and examples given here address the use of the feature in C#. For details specific to other languages, see corresponding topics in the ReSharper by Language section.

Last modified: 03 September 2020