2009-09-18 2 views
1

.Net 내장 데이터 형식의 Parse 및 TryParse 메서드가 마음에 들었습니다. 내가 좋아하는 비슷한 일을 할 수있는 인터페이스를 정의하고 싶습니다 :입력을 T로 구문 분석하거나 매핑하기위한 일반 intrerface?

public interface IParsable<T> 
{ 
    T Parse<TData>(TData input); 
    bool TryParse<TData>(TData input, out T output); 
} 

나는 닷넷에서 검색을 시도하고 나는이 인터페이스 또는 유사한 하나를 사용할 찾을 수 없습니다. 닷넷의 API에서와 같은 연습을하려고합니다.

기본적으로이 인터페이스는 입력을 출력으로 변환하는 메소드 또는 API만을 제공합니다. 그것은 IMapTo로 지명 될 수 있습니다. .Net 또는 공개 오픈 소스 라이브러리에서 이미 사용할 수있는 것이 있는지 확실하지 않은가요? 어떤 제안?

+0

TData/T에는 어떤 종류의 값이 사용됩니까? –

답변

2

의 경우, 나는 당신이 TypeConverter으로 가장 좋다고 생각합니다;

TypeConverter converter = TypeDescriptor.GetConverter(typeof(T)); 
T value = (T) converter.ConvertFromString(s); 
string newS = converter.ConvertToString(value); 

죄송합니다. 나는 더 추가하려고했으나 연결이 끊어졌습니다 (모바일 데이터). TypeConverter의 이점 (예 : Convert.ChangeType)은 컴파일 시간 또는 런타임시 TypeDescriptor에 자신의 형식을 추가 할 수 있다는 것입니다.

Try...은 절대적으로 옳다. 그리고 IsValid 방법은 일반적으로 내가 말할 수있는 한 매우 파손되어있다. 물론 예외를 사용할 수있다.

+0

좋은 .net 프레임 워크, 적어도 몰랐다. 이것은 내 전략을 다시 생각하게한다. TryParse와 같은 메서드가 없습니다. –

+0

TypeConverter에 대한 msdn의 기사 http://msdn.microsoft.com/en-us/library/ayybcxe5.aspx에서 뭔가를 발견했습니다. CanConvertTo 및 CanConvertFrom에 대한 API가 있습니다. 그것을 읽는 것이 흥미 롭습니다. –

+0

@David -'CanConvert *'는 유형에 따라 다르기 때문에'123a456 '이 유효한지 아닌'string'이 유효한지 여부 만 알려줍니다. –

관련 문제