Недавно я увидел некоторый код С#, где декларация интерфейса и реализация, где в том же файле, например,
namespace MyNameSpace.Foo
{
public interface IFoo{
void DoThis();
}
public class Foo : IFoo {
public void DoThis();
}
}
На первый взгляд кажется неправильным иметь декларацию и реализацию в одном файле, но есть практические преимущества. например Когда вы переходите к определению в Visual Studio, интерфейс и реализация находятся в одном файле. Этот подход не запрещает вам выполнять другие реализации интерфейса, например, может потребоваться для модульного тестирования. Для интерфейсов, которые будут только одной реализацией, я думаю, что это может быть прагматичным подходом.
Хорошая или плохая идея?
Продление вопроса:
Как люди используют Visual Studio для перехода к реализации, когда у вас есть ссылка на интерфейс IFoo myFoo = FooFactory.getFoo(MY_FOO);
Если я нажимаю правой кнопкой мыши на IFoo и выбираю Go To Definition, я могу получить декларацию интерфейса. Есть ли способ получить список реализаций IFoo как того, к чему я действительно заинтересован.