2013-03-25 56 views
1

当您注册VirtualPathProvider时,您仍然希望以前的VPP正常工作。我已经看到这样做有两种方式:一种使用base(例如,if base.FileExists(virtualPath)),另一种使用Previous(例如,if Previous.FileExists(virtualPath))。这些之间的区别是什么,并且比另一个更受欢迎?基数vs以前的虚拟路径提供程序

回答

0

看起来,当您在HostingEnvironment中注册VirtualPathProvider时,它会提供当前VirtualPathProviderVirtualPathProviderInitialize方法。此初始化方法将提供的VPP保存到_previous字段中。

由基类VirtualPathProvider使用_previous以下面的方式提供的虚拟方法:

public virtual bool FileExists(string virtualPath) 
{ 
    return this._previous != null && this._previous.FileExists(virtualPath); 
} 

每种方法进行检查以确保_previous看好,然后提供相应的响应。好像拨打base比拨打Previous更安全,因为base会为您检查所有null