私はジェネリックの基本的な使い方を探っています。私はこの単純なパターンを実装して、日々の使用において典型的な問題を解決できると思っていました。私は単純な例を探すために何日も過ごしました。私は.Equalsを探すための例を見つけることができますが、それほど過去はありません。その後のことができるようにC#で簡単な汎用比較を実装する方法
Spec<double> voltageSpec;
Spec<int> cyclesSpec;
Spec<myClass> fishInTheOceanSpec;
:私はのようなものでインスタンス化することができるようにしたい
bool isGood = voltageSpec.inSpec(5.0);
bool isGood cyclesSpec.inSpec(2);
bool isGood fishInTheOceanSpec.(new myClass(20));
私の試みは以下の通りです。
/// <summary>
/// Generic object to hold a specification i.e min and max limits.
/// Implements a method to determin if a value is between limits.
/// </summary>
public class Spec<T> : IComparer<T>
{
public Spec()
{
Min = default(T);
Max = default(T);
}
public T Min { get; set; }
public T Max { get; set; }
public bool inSpec(T Value)
{
if ((Comparer<T>.Default.Compare(Value, this.Max) <= 0) &
(Comparer<T>.Default.Compare(Value, this.Min) >= 0))
return true;
else
return false;
}
public int Compare(T x, T y)
{
if (x == y) return 0;
if (x < y) return -1;
if (x > y) return 1;
}
public Spec<T> Copy()
{
return (Spec<T>)this.MemberwiseClone();
}
}
は、その一部を比較しますクラス。 –
@EK、クラス名に完全な単語を使用することを検討してください。具体的には、代わりに特定のプロパティの範囲を代わりに含める必要があります。 –