2012-03-11 7 views
0

次のコードは、(反射板を使用して)ASP.NETページクラスから取られました:.NET - カスタムイベント

Public Custom Event InitComplete As EventHandler 
     AddHandler(ByVal value As EventHandler) 
      MyBase.Events.AddHandler(Page.EventInitComplete, value) 
     End AddHandler 
     RemoveHandler(ByVal value As EventHandler) 
      MyBase.Events.RemoveHandler(Page.EventInitComplete, value) 
     End RemoveHandler 
    End Event 

なぜ何のRAISEイベントはありませんか?次の記事では、RAISE EVENTがあるはずです:http://msdn.microsoft.com/en-us/library/ms184583%28v=vs.90%29.aspx私が見に期待:

Public Custom Event InitComplete As EventHandler 
     AddHandler(ByVal value As EventHandler) 
      MyBase.Events.AddHandler(Page.EventInitComplete, value) 
     End AddHandler 
     RemoveHandler(ByVal value As EventHandler) 
      MyBase.Events.RemoveHandler(Page.EventInitComplete, value) 
     End RemoveHandler 
     Raise Event 
     End Raise Event 
    End Event 

私はこれはおそらく基本的な質問で実現するが、私はカスタムイベントに新しいですし、それは私が予想以上に困難であることが証明されています。

答えて

0

あなたの前の質問に対する私の答えは次のとおりです。これはVBでPageが書かれていないことを示しています。

.NETイベントでアクセサーを「上げる」必要はありません。 C#には、と指定する構文はありません。

VBただし、です。カスタムイベントが必要です。それでいいです - VBからカスタムイベントで生成されたコードにはアクセサーがあります。 VBでは、その要件を他の言語にも強制することはできません。したがって、アクセス権を持たないイベントを持つコードでは、VBでは直接的に同等のものはありません。

1分ほど外にイベントを残す - 誰かがHumbugという新しい言語を発明したとします。これをILにコンパイルします。 Humbugは、プロパティーが常にゲッターとセッターを持つようにを持つことを指定することが可能です。あなたはgetterまたはsetterだけでプロパティを書くことはできませんでした。 ILをターゲットにしても問題ありませんが、言語はプロパティの一部を指定したコードと相互運用する必要があります。 VBまたはC#のコードで、読み取り専用(または書き込み専用ですが、まれですが)イベントは、ではなく、がHumbugで表現可能です。

あなたが頭を丸くすることができれば、イベントとアクセサーに同じロジックを適用するだけです。

+0

私はまだこれを理解するのに苦労していますが、私の質問に再び答えてくれてありがとう。おそらく私は離れて明日それを見る必要があります。 Reflectorを使用してVB.NETでPageクラスコードを表示しています。カスタムイベントとエンドイベントの間にRAISE EVENTがないカスタムイベントがあります。質問に投稿したMSDNの記事には、カスタムイベントと終了イベントの間にRAISE EVENTがあるはずです。 RAISE EVENTがない理由は何ですか? – w0051977

+0

@ w0051977:どうすればいいのか分かりません。** MSDNの記事でVBについて語っています。 RaiseEventはVBでのみ必要です。これは言語固有です。** –

+0

この質問はVB.NETに関するものです。私は、RAISE EVENTがC#では必要ないとあなたが言ったことから分かります。私はVB.NETの質問です。 Reflectorを使用してPageクラスを開き、コードがVB.NETに表示されます。 InitCompleteと他のイベントのためのRAISE EVENTはありません。引き続きご協力いただき、ありがとうございます。あなたのウェブサイトであなたの本の1つを先に調べていました。 – w0051977

関連する問題