ASP.NET MVC3 のソース コードを読んでいるときに、 ControllerBaseのコード内に次のようなものを見つけました。
public interface IController
{
void Excecute(RequestContext requestContext);
}
public abstract class ControllerBase : IController
{
protected virtual void Execute(RequestContext requestContext)
{
if (requestContext == null)
{
throw new ArgumentNullException("requestContext");
}
if (requestContext.HttpContext == null)
{
throw new ArgumentException(MvcResources.ControllerBase_CannotExecuteWithNullHttpContext, "requestContext");
}
VerifyExecuteCalledOnce();
Initialize(requestContext);
using (ScopeStorage.CreateTransientScope())
{
ExecuteCore();
}
}
void IController.Execute(RequestContext requestContext)
{
Execute(requestContext);
}
}
ControllerBase は の実装をExecute
提供しますが、定義を提供するものがありますIController.Execute
。
なぜこれが行われ、何を達成するのでしょうか? 何の役にも立たないようです。