5

私は .NET4 ソースを読んでいます (研究のために自由にダウンロードできます) System.Web.Security.FormsAuthenticationModule

クラスは次のように宣言されます。

public sealed class FormsAuthenticationModule : IHttpModule

where には とIHttpModuleの 2 つのメソッドがInit()ありDispose()ます。

内部OnEnter()には次の行があります。

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

whereOnAuthenticate()は次のように宣言されます。

// 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ので、とにかくそれがどのようにオーバーライドされたのかわかりません。

したがって、これらのコメントは古くなっているように見え、上書きOnAuthenticate()はできなくなりました。

何か問題がありましたか?このコードはオーバーライドを許可する可能性がありますOnAuthenticate()か?

4

2 に答える 2

1

うまくいきません。それは単に間違ったドキュメントです。MSにとっては初めてではありません。たとえば、.NET Framework のバージョン 1.1 でこれについて MS に通知しましたが、ここでは 4.5 であり、ドキュメントはまだ完全に誤解を招くものです: http://msdn.microsoft.com/en-us/library/7he0a7s1.aspx

「継承者への注意事項」セクションに注意してください。internal abstract複数のプロパティとメソッドが含まれている場合、BindingManagerBase からクラスを派生させるにはどうすればよいでしょうか? それでも、BindingManagerBase と CurrencyManager のドキュメントには、「継承者への注意事項」がある場所がいくつかあります...

于 2013-03-25T21:33:43.977 に答える