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

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Автоматическое (не связанное с рефакторингом) извлечение интерфейса из класса

Сообщение Anonymous »

Я относительно новичок в C#, так что это может быть несколько наивный вопрос.

Существует ли способ или даже может ли он быть создан для создания интерфейс, содержащий все общедоступные методы/свойства класса?

Я нахожусь в проекте, использующем фреймворк Moq. Moq имеет, по-видимому, довольно распространенное ограничение: он может обрабатывать только интерфейсы и виртуальные методы. Архитектор проекта решил пойти по пути интерфейса, что означает, что каждый класс в проекте имеет соответствующий интерфейс. Это означает, что существует множество интерфейсов, реализованных одним классом. Более того, стиль требует, чтобы интерфейсы помещались в отдельные файлы. Это означает, что в проекте загрузка файлов.

На мой взгляд, было бы реально лучше, если бы эти интерфейсы и файлы- «Только за минимальный заказ» могло бы быть немного менее навязчивым. Нет ли способа заставить систему (Visual Studio/.Net/C#) создавать их.

Например, если писать это

Код: Выделить всё

[ExtractAndImplement("IFoo")]
public class Foo
{
public int Bar(int baz)
{
...
}
}
будет эквивалентно

Код: Выделить всё

public interface IFoo
{
int Bar(int baz);
}

public class Foo : IFoo
{
public int Bar(int baz)
{
...
}
}
Примечание Нет, Refactor -> Extract Interface не делает то, что я хочу. Во-первых, он создает интерфейс где-то в исходном коде, поэтому не уменьшает беспорядок из отдельно реализованных интерфейсов. Во-вторых, это интерфейс, который мне нужно явно поддерживать; когда я добавляю общедоступный метод в класс, мне нужно извлечь этот новый метод в правильный интерфейс. Нет, мне бы хотелось иметь что-то неявное, т.е. интерфейсы создаются на лету, не загромождая исходный код или проект.

Я предполагаю, что в Lisp/ В схеме это можно сделать с помощью макросов, а в Haskell — с помощью шаблонов.

Подробнее здесь: https://stackoverflow.com/questions/229 ... from-class
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»