IComparableタイプの2つの値を比較する関数を作成し、等しくない場合はスローします。基本的に、アサーションを作り直します。はい、私は車輪の再発明をしていることを知っています。
public static void IsEqual<T>(T Value1, T Value2) where T : IComparable<T>
{
if (0 != Value1.CompareTo(Value2))
{
throw new ApplicationException("Fail");
}
}
文字列を除いて正常に動作します。大文字と小文字を区別しないオプションを期待していました。「AA」と「aa」
Tが文字列の場合は特にこのメソッドをオーバーライドしたいので、String.Compareを使用して大文字と小文字を区別しません。文字列を無視するかどうかをユーザーが指定できるように、別のパラメーターを用意するのもよいでしょう(ただし、これはintのような他のタイプには役に立たないので、紛らわしい/悪いデザインのようです。ここで提案を受け付けています)。
これを行う良い方法はありますか?また、IComparableとは異なるタイプに変更することもできます。当初は、これが仕事に最適なインターフェイスだと思っていましたが、今では間違っていた可能性があることに気づきました。
where T : IComparable<T>