При просмотре исходного кода ASP.NET MVC в codeplex Я обнаружил, что обычно класс явно реализует интерфейс. Явно реализованный метод/свойство затем вызывает другой «защищенный виртуальный» метод/свойство с тем же именем.
Например,
public class MvcHandler : IHttpHandler, IRequiresSessionState
{
protected virtual bool IsReusable
{
get
{
return false;
}
}
bool IHttpHandler.IsReusable
{
get
{
return IsReusable;
}
}
}
Теперь я уверен, в чем преимущество такого программирования. Лично я предпочитаю просто неявно реализовать интерфейс IHttpHandler.
Я предполагаю, что автор просто не хочет, чтобы MvcHandler имел общедоступное свойство IsResuable. Свойство IsReusable можно использовать, только если экземпляр MvcHandler обрабатывается как IHttpHandler. Тем не менее, я не уверен, почему автор что это путь.
Кто-нибудь знает больше преимуществ этого стиля реализации интерфейса?