あなたが説明しているのは、本質的にtuples、特定の目的に使用されるグループ化された値です。それらは関数型プログラミングの有用な構成要素であり、そのスタイルを非常によくサポートします。
欠点は、それらの値に名前が付けられておらず、理解するためにコンテキストが必要なことです。EventArgs
その性質上、関連するコンテキストから遠く離れて消費されることがよくあります。したがって、タプル風EventArgs
は消費者にとって非常に混乱する可能性があります。
何らかの除算が完了したことを示すイベントがあり、分子、分母、および結果が含まれているとします。
public event EventHandler<EventArgs<double, double, double>> Divided;
イベント ハンドラーにはあいまいな点があります。
private void OnDivided(object sender, EventArgs<double, double, double> e)
{
// I have to just "know" this - it is a convention
var numerator = e.Value1;
var denominator = e.Value2;
var result = e.Value3;
}
EventArgs
これは、イベントを表すとより明確になります。
private void OnDivided(object sender, DividedEventArgs e)
{
var numerator = e.Numerator;
var denominator = e.Denominator;
var result = e.Result;
}
ジェネリックな再利用可能なEventArgs
クラスは、意図を表現することを犠牲にしてメカニズムの開発を容易にします。