イベントとその引数を一般的に処理するようにイベント呼び出し関数を書き直した後、(変更に一致するように)コードを調べ始めたところ、コンパイラーが暗黙的に一般的な呼び出しを行っていることに気付きました。
これが私の関数です:
private void InvokeEvent<TArgs>(EventHandler<TArgs> invokedevent, TArgs args)
where TArgs : EventArgs
{
EventHandler<TArgs> temp = invokedevent;
if (temp != null)
{
temp(this, args);
}
}
関数を呼び出す行は次のとおりです。
InvokeEvent(AfterInteraction, result);
これは問題なくコンパイルされ、インテリセンスは「正しい」呼び出し(パーツを含む)を表示します。
これはコンパイラの機能ですか(ジェネリック型は実際には2番目の引数から直接推測できます)、それとも私は何にも夢中になってポイントを逃していますか?