虚拟路径提供程序中的base与Previous

时间:2013-03-25 18:09:41

标签: asp.net-mvc

注册VirtualPathProvider时,您仍然希望以前的VPP能够正常工作。我已经通过两种方式看到了这一点:一种是使用base(例如,if base.FileExists(virtualPath))而另一种是使用Previous(例如if Previous.FileExists(virtualPath))。这些之间有什么区别,并且优先于另一个?

1 个答案:

答案 0 :(得分:0)

看起来,当您使用VirtualPathProvider注册HostingEnvironment时,它会向VirtualPathProvider的{​​{1}}方法提供当前Initialize。此初始化方法将提供的VPP保存到字段VirtualPathProvider

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

_previous

每个方法检查以确保public virtual bool FileExists(string virtualPath) { return this._previous != null && this._previous.FileExists(virtualPath); } 被估值,然后提供相关的响应。调用_previous似乎比调用base更安全,因为Previous将为您执行所有base检查。