Вы можете фактически сделать метод приватным в реализующем классе, если вы сделаете явную реализацию интерфейса:
public interface IMyInterface
{
bool GetMyInfo(string request);
}
public class MyClass : IMyInterface
{
public void SomePublicMethod() { }
bool IMyInterface.GetMyInfo(string request)
{
// implementation goes here
}
}
Этот подход означает, что GetMyInfo
не будет частью открытого интерфейса MyClass
. Доступ к нему можно получить только путем приведения экземпляра MyClass
к IMyInterface
:
MyClass instance = new MyClass();
// this does not compile
bool result = instance.GetMyInfo("some request");
// this works well on the other hand
bool result = ((IMyInterface)instance).GetMyInfo("some request");
Итак, в контексте интерфейса все его члены будут публичными. Они могут быть скрыты от открытого интерфейса реализующего класса, но всегда есть возможность сделать приведение типа к экземпляру и получить доступ к членам таким образом.