codeplexでASP.NET MVC ソース コードを参照しているときに、インターフェイスを明示的に実装するクラスが一般的であることがわかりました。明示的に実装されたメソッド/プロパティは、同じ名前の別の「保護された仮想」メソッド/プロパティを呼び出します。
例えば、
public class MvcHandler : IHttpHandler, IRequiresSessionState
{
protected virtual bool IsReusable
{
get
{
return false;
}
}
bool IHttpHandler.IsReusable
{
get
{
return IsReusable;
}
}
}
私は今、この種のプログラミングの利点が何であるかを確信しています。私にとっては、インターフェイス IHttpHandler を暗黙的に実装することを好みます。
作成者は、 MvcHandlerにパブリック プロパティIsResuableを持たせたくないだけだと思います。プロパティIsReusableは、 MvcHandlerのインスタンスがIHttpHandlerとして扱われる場合にのみ使用できます。それでも、なぜ作者がこのようにしたのかはわかりません。
このスタイルのインターフェイス実装の利点を知っている人はいますか?