【发布时间】:2013-03-04 12:01:25
【问题描述】:
我正在阅读 .NET4 源代码(它们可以免费下载以供研究),我在 System.Web.Security.FormsAuthenticationModule 的实现中发现了一些奇怪的东西。
类是这样声明的:
public sealed class FormsAuthenticationModule : IHttpModule
IHttpModule 有两种方法 - Init() 和 Dispose()。
在OnEnter() 里面有这些行:
// Step 2: Call OnAuthenticate virtual method to create
// an IPrincipal for this request
OnAuthenticate( new FormsAuthenticationEventArgs(context) );
OnAuthenticate() 声明如下:
// OnAuthenticate: Forms Authentication modules can override
// this method to create a Forms IPrincipal object from
// a WindowsIdentity
private void OnAuthenticate(FormsAuthenticationEventArgs e) {
现在类是sealed,所以不可能继承。 OnAuthenticate() 也不是 virtual 所以我看不出它怎么可能被覆盖。
所以看起来这些 cmets 已经过时了,不再可能覆盖 OnAuthenticate()。
我有什么问题吗?这段代码可能允许覆盖OnAuthenticate()吗?
【问题讨论】:
-
AFAIU 这个类从 beginning987654321@开始密封
-
从名称和参数可以看出这是一个'event trigger',它们通常应该是虚拟的。这当然与密封相冲突。最坏的情况是一个类可以订阅它自己的事件。