C# クラスがあるとします。
public class Node
{
public double A { get; set; }
public double B { get; set; }
}
...そして、そのタイプのオブジェクトのリストを含む別のクラス:
public Buffer
{
private List<Node> _nodes;
...
}
ここで、_nodes リスト内の Node オブジェクトの A の値の合計を計算する必要があるとします。次に、(個別に) B の合計を計算します。コードを複製することなく、「汎用」Sum() メソッドを使用してこれを行う方法はありますか?
たとえば、1 つのアプローチは次のようになります。
public class Buffer
{
...
private double SumA()
{
double sum;
foreach (Node node in _nodes)
{
sum += node.A;
}
return sum;
}
private double SumB()
{
double sum;
foreach (Node node in _nodes)
{
sum += node.B;
}
return sum;
}
}
ここでの問題は、SumA() と SumB() によって実装される基本的なアルゴリズムは同じですが、上記の場合は重複していることです。Node に合計が必要なプロパティがさらにある場合、または Sum() がはるかに複雑なプロセスである場合 (現在リファクタリングしている場合はどちらも当てはまります)、これは複雑になります。
質問を別の言い方をすれば、Sum() メソッドを 1 つだけ持つ方法はありますが、合計する必要があるリスト内のクラス Node のメンバーを操作する方法はありますか?