我需要编写一些我称之为聚合容器的东西,它存储聚合,聚合本质上是采取对象集合并输出单个对象作为结果的操作。聚合的示例是:算术平均值、一组数字的中值、调和平均值等。这是一个示例代码。
var arithmeticMean = new Aggregation
{
Descriptor = new AggregationDescriptor { Name = "Arithmetic Mean" },
Action = (IEnumerable arg) =>
{
double count = 0;
double sum = 0;
foreach (var item in arg)
{
sum += (double)item;
count++;
}
return sum / count;
}
};
这是我的代码问题。我假设对象只是双倍的,因此进行了转换。如果他们不是双重的怎么办?如何确保允许我对两个对象求和?标准.Net程序集中是否有某种接口?我需要像 ISummable 这样的东西......或者我需要自己实现它(然后我必须包装所有原始类型,如 double、int 等来支持它)。
任何有关此类功能设计的建议都会有所帮助。