1

VSにイベントハンドラーを生成させたところ、メソッドの代わりにプロパティが作成されました。わかりません。VS 2012で別のテストを試したところ、期待どおりに機能しました。

まず、これは私が思ったように機能した私のテストです:

private static void EventTest()
{
    Geek skeet = new Geek();

    skeet.SomeEvent += skeet_SomeEvent;
}

VSにハンドラーを生成させると、これが作成されました。

static void skeet_SomeEvent(object sender, EventArgs e)
{
    throw new NotImplementedException();
}

それは理にかなっている。そのメソッドは、イベントが呼び出されたときに呼び出されます。

さて、問題...私はVS 2010で既存のプロジェクトに取り組んでおり、同じことをするとき(VSにハンドラーを生成させる):

private void SubscribeToPlcDataChangeEvents()
{
    _plc.PlcLoggerEventHandler += _plcLoggerEventHandler;
}

プロパティを作成します。

public EventHandler<PlcLoggerEventArgs> _plcLoggerEventHandler { get; set; }

なんで?わかりません。メソッドでイベントを処理したい。

編集-これは、イベントハンドラーが宣言される方法です。

public event EventHandler<PlcLoggerEventArgs> PlcLoggerEventHandler;
4

1 に答える 1

3

2回ヒットTabすると、イベントハンドラーの場合に「適切に」生成されていることがわかります。

Visual Studio 2010で「アイテムのバインドに役立つオプション」ショートカットAlt++を使用する場合、この場合のShift2つの可能なアクションは次のとおりです。F10

  • 'PlcLoggerEventHandler'のプロパティスタブを...で生成します。
  • 'PlcLoggerEventHandler'のフィールドスタブを...で生成します。

したがって、これを使用したときにプロパティが作成されるという事実は、イベントハンドラーの場合は意味がありませんが、設計によるもののようです。

于 2013-03-08T17:31:31.627 に答える