1
当您注册VirtualPathProvider时,您仍然希望以前的VPP正常工作。我已经看到这样做有两种方式:一种使用base
(例如,if base.FileExists(virtualPath)
),另一种使用Previous
(例如,if Previous.FileExists(virtualPath)
)。这些之间的区别是什么,并且比另一个更受欢迎?基数vs以前的虚拟路径提供程序
当您注册VirtualPathProvider时,您仍然希望以前的VPP正常工作。我已经看到这样做有两种方式:一种使用base
(例如,if base.FileExists(virtualPath)
),另一种使用Previous
(例如,if Previous.FileExists(virtualPath)
)。这些之间的区别是什么,并且比另一个更受欢迎?基数vs以前的虚拟路径提供程序
看起来,当您在HostingEnvironment
中注册VirtualPathProvider
时,它会提供当前VirtualPathProvider
到VirtualPathProvider
的Initialize
方法。此初始化方法将提供的VPP保存到_previous
字段中。
由基类VirtualPathProvider
使用_previous
以下面的方式提供的虚拟方法:
public virtual bool FileExists(string virtualPath)
{
return this._previous != null && this._previous.FileExists(virtualPath);
}
每种方法进行检查以确保_previous
看好,然后提供相应的响应。好像拨打base
比拨打Previous
更安全,因为base
会为您检查所有null
。