이 클래스의 유효성을 검사하려고합니다 : min >= max
. 제네릭을 사용하여 비교기를 사용할 수 없다는 것을 깨달았습니다.제네릭을 사용하여이 상황을 확인하는 방법을 지정 하시겠습니까?
이것은 제 일반적인 클래스입니다.
public class Range<T>
{
public T MinValue { get; set; }
public T MaxValue { get; set; }
public Range() { }
public Range(T min, T max)
{
this.MinValue = min;
this.MaxValue = max;
}
public override bool Equals(object obj)
{
if (obj == null) return false;
var other = obj as Range<T>;
return this.MinValue.Equals(other.MinValue) &&
this.MaxValue.Equals(other.MaxValue);
}
public override string ToString()
{
return string.Format("{0},{1}", this.MinValue, this.MaxValue);
}
}
T 데이터 타입은 숫자 만 할 수 있습니다, 단지 숫자에 동의하고 <=
을 수용하는 방법은 무엇입니까?
if (min.CompareTo(max) >= 0)...
을 그리고 검증 예외를 던져 :
구조체 제약 등에 대한 액세스 권한을>, <,주지 못할 것이다
또한에서 우선 같음에 변화하는 것이 좋습니다 'IComparable'하지만'string'과 같은'struct '는 아닙니다. –
알다시피, 나는 단지 '문자열'과 함께 사용하는 능력을 잃을 것이므로 아무 것도 얻지 못할 것이라고 덧붙였다. 예를 들어 "A"에서 "Z"까지 범위을 갖는 것이 바람직 할 수있다. .. –