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
。