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

public sealed class FormsAuthenticationModule : IHttpModule

其中IHttpModule有两种方法-Init()Dispose()
里面有几行:
// Step 2: Call OnAuthenticate virtual method to create
//    an IPrincipal for this request
OnAuthenticate( new FormsAuthenticationEventArgs(context) );

其中OnEnter()声明如下:
// OnAuthenticate: Forms Authentication modules can override
//             this method to create a Forms IPrincipal object from
//             a WindowsIdentity
private void OnAuthenticate(FormsAuthenticationEventArgs e) {

现在类是OnAuthenticate(),所以不可能从继承。而且sealed不是OnAuthenticate()所以我不知道它是如何被重写的。
所以看起来这些评论已经过时了,不再可能覆盖virtual
我做错什么了吗?此代码是否可能允许重写OnAuthenticate()

最佳答案

它不起作用。这只是不正确的文件。对ms来说,这不是第一次。例如,我在.net framework的1.1版中通知了ms,现在是4.5版,文档仍然完全误导了她:http://msdn.microsoft.com/en-us/library/7he0a7s1.aspx
请注意“继承人注意事项”部分。当bindingmanagerbase包含多个internal abstract属性和方法时,如何从它派生类?然而,在bindingmanagerbase和currencymanager的文档中有几个地方有“继承者注释”…

09-11 20:14