나는 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
에 대한 정의?
왜 이렇게 되었습니까? 아무런 도움이되지 않는 것 같습니다.
가상'Execute'를 오버라이드하는 경우는, 명시 적으로는'IController.Execute' 여전히 기본 구현을 실행합니다 :
나는 여기에 대한 좋은 기사를 발견? – Joe@Joe No. 오버 라이딩 된 가상 Execute가 있으면 실행합니다. – Scott
어쩌면 그 방법은 '공개'가 아닌 '보호 된'방법 일뿐입니다. – Joe