我正在尝试以某种方式做某事......但我确信有更好的方法
public interface IMix
{
T Mix<T>(List<T> values) where T : IMix;
}
这样做的问题是,如果我想“混合”5 个值,那么我需要这样做value1.Mix(others)
,但这并不干净。另外, T 的类型必须与实现接口的任何类的类型相同。所以,这真的行不通。
我在想这样的事情:
public static class MixWrapper
{
public static T Mix<T>(List<T> values);
}
但这显然行不通,因为我必须在MixWrapper
编辑:为了消除一些误解,这些不是真正的数学平均值,我可以很容易地说“保险丝”或其他任何东西。例如,我可能会尝试对某个结构或其他类的列表进行“平均”。
编辑2:一个例子可能是这样的类
class Sequence : IMix
{
List<int> sequence;
double period;
double weight;
}
在这种情况下,“混合”需要返回以Sequence
这种方式构建的 a:生成的周期是基于权重的周期的加权平均值。权重是权重的总和,序列是序列在时间按比例缩小到结果周期后的加权平均值。可以说,任何你能想到的复杂方法都需要考虑