Рефакторинг для извлечения интерфейса (C#)

Извлечение интерфейса — это операция рефакторинга, обеспечивающая простой способ создания нового интерфейса, включающего члены, происходящие из существующего класса, структуры или интерфейса.

Если несколько клиентов пользуются одним подмножеством членов класса, структуры или интерфейса или несколько классов, структур или интерфейсов имеют подмножество общих членов, то может быть полезно создать их этого подмножества членов интерфейс. Дополнительные сведения об использовании интерфейсов см. в разделе Интерфейсы (Руководство по программированию в C#).

При выполнении операции "извлечение интерфейса" в новом файле генерируется интерфейс и курсор помещается в начале этого файла. С помощью диалогового окна Извлечение интерфейса можно указать члены, которые нужно извлечь в новый интерфейс, имя нового интерфейса и имя генерируемого файла.

Чтобы воспользоваться операцией "извлечение интерфейса"

  1. Создайте консольное приложение с именем ExtractInterfaceи затем замените Program следующим примером кода.

    // Invoke Extract Interface on ProtoA.
    // Note:  the extracted interface will be created in a new file.
    class ProtoA
    {
        public void MethodB(string s) { }
    }
    
  2. Расположив курсор на методе MethodB, щелкните команду Извлечение интерфейса в меню Оптимизация.

    Откроется диалоговое окноИзвлечение интерфейса.

    Кроме того, диалоговое окно Извлечение интерфейса можно открыть нажатием на клавиатуре сочетания клавиш CTRL+R, I.

    Кроме того, можно нажать правую кнопку мыши, выбрать пункт меню Оптимизация и затем щелкнуть Извлечение интерфейса, после чего откроется диалоговое окно Извлечение интерфейса.

  3. Нажмите кнопку Выбрать все.

  4. Нажмите кнопку ОК.

    Откроется новый файл IProtoA.cs и будет показан следующий код:

    using System;
    namespace TopThreeRefactorings
    {
        interface IProtoA
        {
            void MethodB(string s);
        }
    }
    

Заметки

Эта функция доступна только в том случае, если курсор расположен в пределах класса, структуры или интерфейса, содержащего члены, которые нужно извлечь. Когда курсор находится в таком положении, нужно запустить выполнение операции рефакторинга "извлечение интерфейса".

При вызове операции "извлечение интерфейса" для класса или структуры, список базовых классов и интерфейсов этого элемента изменяется, так как в него включается имя нового интерфейса. При вызове операции "извлечение интерфейса" для интерфейса, его список базовых классов и интерфейсов не изменяется.

См. также

Основные понятия

Рефакторинг (C#)