2011-01-17 5 views
3

또는보다 구체적기존 .net 유형에 대한 유형 설명자를 대체 할 수 있습니까?

1) 나는 런타임에 형식 변환기를 얻을 수있는 가장 좋은 방법은 무엇 속성

2) 그렇다면,에 타입 디스크립터를 할당 할 수 있습니다.

기본적으로 리플렉션을 사용하여 채워지는 구성 개체가 있습니다. 지금까지 간단한 형식 (string, int, datetime)에 대해서만 작동하지만 쉼표로 구분 된 목록을 List로 변환하는 것을 지원하고 싶었습니다.

지금까지 나는 사용자 정의 유형 "ConvertableList<T>"을 List<T>에서 파생시키고이를 내 사용자 정의 유형 변환기로 장식하여이 작업을 수행했습니다.

답변

7

당신은 같은 기존 유형 TypeConverter의를 연결할 수 있습니다

TypeDescriptor.AddAttributes(typeof(List<int>), 
     new TypeConverterAttribute(typeof(MyTypeConverter))); 

(어딘가에 시작하는 동안)

다음 에이에게 변환기를 얻을, 표준 코드는 작동합니다 :

TypeConverter conv = TypeDescriptor.GetConverter(typeof(List<int>)); 

또는 :

object obj = new List<int>(); 
    ... 
    TypeConverter conv = TypeDescriptor.GetConverter(obj); 
+0

내 서술자는 항상 기본보다 우선 순위가 높습니까? –

+1

@Ben - 'TypeDescriptor'를 사용하는 모든 코드에 대해 예. 어떤 코드는 'IList'(비 제너릭)와 특수한 경우를 검사하기로 결정할 수도 있습니다. 특별한 경우 코드를 변경할 수 없습니다. –

+0

위대한 마크, 명확히 해줘서 고마워. –

관련 문제