에 문자열을 구문 분석 :나는 다음과 같은 클래스가 일반 대등
public class Filter<T> where T : IComparable<T> {
public static Boolean TryParse(String[] values, out List<T> result) {
}
}
나는 네 다음 "결과"에 변환 된 값을 반환하는 경우 모든 값 T.로 전환이 있는지 확인해야합니다. 그러나 적어도 하나가 컨버터블이 아니면 거짓과 결과를 null로 반환하고 싶습니다.
Int32 구문 분석, 부울 구문 분석을 사용할 것입니다. 그러나이 경우 T 유형이 확실하지 않습니다. 그냥 비교할 수 있다는 것을 알고 있습니다.
어떻게하면됩니까? 사용자 정의 유형의
public class Filter<T> where T : IComparable<T>
{
public static Boolean TryParse(String[] values, out List<T> result)
{
result = null;
try
{
TypeConverter converter = TypeDescriptor.GetConverter(typeof(T));
result = values.Select(v => converter.ConvertFromInvariantString(v)).ToList();
return true;
}
catch
{
return false;
}
}
}
자신을 구현해야합니다 :
당신이'IConvertable'사용할 수 :
문제에 대한 완전한 해결책이 있을까요? –
좋은 질문입니다. 대답은 "지원되는 모든 데이터 유형으로 큰 스위치 블록 사용"일 것이지만 기꺼이 잘못된 것으로 입증 될 것입니다. 물론, 제어 흐름에 대한 예외 사용에 반대하지 않는다면, Convert.ChangeType (value, typeof (T))와 예외 핸들러를 사용하면 효과적입니다. – Heinzi
@ 대니얼 A. 화이트 : T는 Int, Boolean, Datetime 및 Double 만 사용하므로 컨버터블을 사용할 수 있다고 생각합니까? –