私はジェネリッククラスを作ろうとしています。IComparable
実装するオブジェクトのみをジェネリックに渡すことができるように制約を作成する方法はありますか? 例えば:
public class MyClass<T>
{
}
public class MyFooClass
{
}
public class MyComparableFooClass : IComparable
{
public int Compare(MyComparableFooClass q)
{
return 0;
}
}
public class MyMainClass()
{
private MyClass<int> _myIntClass; // This is okay since int implements IComparable
private MyClass<MyComparableFooClass> _myComparableFooClass // This should be okay too since int implements IComparable
private MyClass<MyFooClass> _myFooClass; // This should get a compile error since MyFooClass doesn't implement IComparable
}
うまくいけば、私の例は明確です。MyClass<T>
を実装するオブジェクトを許可したいだけですIComparable
。where
私が間違っていなければ、制約はクラスでのみ機能することを理解しています。これは可能ですか、または誰かが回避策を提供できますか?