2013-03-25 31 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