IComparable 형식의 두 값을 비교하고 같지 않은 경우 throw하는 함수를 작성하고 있습니다. 기본적으로, assert를 재 작성합니다. 예, 저는 바퀴를 다시 발명하고 있음을 알고 있습니다.IComparable IgnoreCase
public static void IsEqual<T>(T Value1, T Value2) where T : IComparable<T>
{
if (0 != Value1.CompareTo(Value2))
{
throw new ApplicationException("Fail");
}
}
문자열을 제외하고는 잘 작동합니다. 대소 문자를 무시하는 옵션이 필요했습니다. "AA"vs "aa"
T가 문자열 인 경우이 메서드를 특히 재정의하려면 String.Compare를 사용하고 대/소문자를 무시할 수 있습니다. 또한 사용자가 문자열을 무시해야하는지 지정할 수 있도록 다른 매개 변수를 사용하는 것도 좋습니다 (int와 같은 다른 유형에서는 쓸모가 없으므로 혼란 스럽거나 나쁜 디자인처럼 보입니다. 여기서는 제안을 공개합니다).
이렇게하는 좋은 방법이 있습니까? 나는 또한 IComparable과 다른 유형으로 변경하는 것에 대해 개방적이다. 처음에는이 인터페이스가 작업을위한 최상의 인터페이스라고 생각했지만 지금은 내가 틀릴 수도 있다는 것을 깨달았다.
where T : IComparable<T>
작동하지 않을까요? 뭔가 (if (typeof (T) == string) String.Compare (...) –
예, 이것은 내가 찾고있는 것입니다. 타입 비교가 어떻게 이루어 졌는지 알지 못했습니다. 감사! – Sperry