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()吗?
这不起作用。这只是不正确的文档。对于 MS 来说这并不是第一次。例如,我在 .NET Framework 1.1 版本中向 MS 通知了这一点,而现在是 4.5,并且文档仍然完全具有误导性:http://msdn.microsoft.com/en-us/library/7he0a7s1.aspx
请注意“继承者注释”部分。当 BindingManagerBase 包含多个属性和方法时,人们应该如何从 BindingManagerBase 派生一个类internal abstract?然而,BindingManagerBase 和CurrencyManager 的文档中有几个地方有“继承者注释”...