Возможно, вы захотите сделать это, если у класса есть явная реализация метода интерфейса. Рассмотрим этот пример:
public interface ISomething { void Action(); }
public interface ISomethingElse {void Action(); }
public class Something : ISomething
{
public void Action()
{
}
void ISomething.Action()
{
}
}
public class Something2 : ISomething, ISomethingElse
{
void ISomething.Action()
{
}
void ISomethingElse.Action()
{
}
}
Если вы хотите, чтобы ISomething.Action вызывался для Something, вы должны вызывать его через переменную ISomething. Даже в Something2 метод Action скрыт, если вы не делаете это через интерфейс.
Тем не менее, вы обычно хотите избежать подобных реализаций. Я сомневаюсь, что каркасный класс заставит вас сделать это, но это будет сценарий для объявления его с помощью интерфейса.
Обновление 1: Чтобы прояснить ситуацию, приведем дополнительный код о том, как добраться до методов:
Something some = new Something();
some.Action(); //calls the regular Action
ISomething isome = some;
isome.Action(); //calls the ISomething.Action
((ISomething)some).Action(); //again, calls ISomething.Action
Something2 some2 = new Something2();
some2.Action();//compile error
((ISomething)some2).Action(); //calls ISomething.Action
((IsomethingElse)some2).Action(); // calls ISomethingElse.Action