特定の方法で何かをしようとしていますが、もっと良い方法があると確信しています
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
編集:誤解を解くために、これらは実際の数学の平均ではありません。「ヒューズ」などと簡単に言うことができます。たとえば、一部の構造体または他のクラスのリストを「平均化」しようとしている可能性があります。
EDIT 2: 1つの例は、このようなクラスになる可能性があります
class Sequence : IMix
{
List<int> sequence;
double period;
double weight;
}
この場合の "Mix" は、このSequence
ように構築された を返す必要があります。結果の期間は、重みに基づく期間の加重平均です。重みは重みの合計であり、シーケンスは結果の期間にタイムスケールダウンされた後のシーケンスの加重平均です。言うまでもなく、考えられる複雑な方法はすべて説明する必要があります