Ваш код должен работать без каких-либо модификаций или дополнительных операторов "using". Это связано с тем, что компилятор C # компилирует весь проект (то есть все исходные файлы) как один большой модуль, тогда как компиляторы C (и C ++) получают инструкции директив препроцессора (например, #include), чтобы сообщить им, какие файлы включать.
Кстати, члены в объявлениях интерфейса неявно являются публичными, поэтому ваши «публичные» модификаторы там избыточны (я думаю, что это также дает вам ошибку компилятора). Возможно, это вас смущает?
Недоступность может возникнуть (в случае интерфейсов), только если вы не соответствуете модификаторам видимости, например:
internal interface IFoo
{
void Stuff();
}
public interface ISomething
{
IFoo GetFoo();
}
В этом случае вы получите ошибку компилятора «Несогласованная доступность».
Редактировать : если elsewhere.cs и IBar.cs находятся в разных сборках, сборка, в которой есть elsewhere.cs, должна иметь ссылку на сборку, содержащую IBar (и IFoo). Нет никакого способа автоматизировать это, хотя Visual Studio предупредит вас, если вы пропустите какие-либо ссылки (и ваш проект не будет компилироваться).