제네릭 클래스를 만들려고합니다. 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
제약은 클래스에서만 작동한다는 것을 이해합니다. 이것이 가능합니까 아니면 누군가가 해결 방법을 제안 할 수 있습니까? 너무 인터페이스
public class MyClass<T> where T: IComparable
{
}