1

当您注册一个 VirtualPathProvider 时,您仍然希望以前的 VPP 工作。我已经看到通过两种方式完成此操作:一种是使用base(例如,if base.FileExists(virtualPath)),另一种是使用Previous(例如,if Previous.FileExists(virtualPath))。这些之间有什么区别,一种优于另一种?

4

1 回答 1

0

看起来,当您向 注册 aVirtualPathProviderHostingEnvironment,它会为VirtualPathProviderInitializeVirtualPathProvider. 此初始化方法将提供的 VPP 保存到字段中_previous

基类提供的虚方法VirtualPathProvider使用_previous方式如下:

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

每个方法都会检查以确保它_previous被重视,然后提供相关的响应。看起来 callbase比 call 更安全Previous,因为它base会为你做所有的null检查。

于 2013-03-25T18:48:57.313 回答