Это связано с тем, что интерфейсы не могут указывать ничего о видимости элементов, только сами элементы.Все члены, которые реализуют интерфейс, должны быть public
.То же самое происходит при реализации интерфейса private
.
Одним из решений может быть явная реализация интерфейса:
internal interface IFoo
{
void foo();
}
public class A : IFoo
{
void IFoo.foo()
{
Console.WriteLine("A");
}
}
В приведенном выше коде у вас должен быть экземпляр A
приведение к IFoo
для возможности вызова foo()
, но вы можете выполнять такое приведение, только если вы internal
по сравнению с классом и, следовательно, имеете доступ к IFoo
.