FormsAuthenticationModule中的这段代码应该如何工作?

sha*_*oth 5 .net c# iis .net-4.0

我正在阅读.NET4源代码(可以免费下载它们进行研究)我在实现中发现了一些奇怪的东西System.Web.Security.FormsAuthenticationModule.

该类声明如下:

public sealed class FormsAuthenticationModule : IHttpModule
Run Code Online (Sandbox Code Playgroud)

哪里IHttpModule有两种方法 - Init()Dispose().

里面OnEnter()有这些线:

// Step 2: Call OnAuthenticate virtual method to create 
//    an IPrincipal for this request
OnAuthenticate( new FormsAuthenticationEventArgs(context) );
Run Code Online (Sandbox Code Playgroud)

在哪里OnAuthenticate()声明如下:

// OnAuthenticate: Forms Authentication modules can override 
//             this method to create a Forms IPrincipal object from
//             a WindowsIdentity 
private void OnAuthenticate(FormsAuthenticationEventArgs e) {
Run Code Online (Sandbox Code Playgroud)

现在这个班级是sealed,所以不可能继承.还OnAuthenticate()没有virtual,所以我看不出它本来反正覆盖.

所以看起来这些评论只是过时了,OnAuthenticate()不再可能覆盖.

我有什么不对吗?这段代码可能允许覆盖OnAuthenticate()吗?

Pet*_*ete 1

这不起作用。这只是不正确的文档。对于 MS 来说这并不是第一次。例如,我在 .NET Framework 1.1 版本中向 MS 通知了这一点,而现在是 4.5,并且文档仍然完全具有误导性:http://msdn.microsoft.com/en-us/library/7he0a7s1.aspx

请注意“继承者注释”部分。当 BindingManagerBase 包含多个属性和方法时,人们应该如何从 BindingManagerBase 派生一个类internal abstract?然而,BindingManagerBase 和CurrencyManager 的文档中有几个地方有“继承者注释”...