2012-10-05 3 views
0

아래 코드에서 TSource 유형을 결정해야합니다. 파싱 ​​된 매개 변수는 예를 들어 IList 또는 자동차 만 등이 될 수 있습니다. Model.Map < 메서드에서 generic 형식의 구문 분석 유형이 필요합니다. 파싱 ​​된 매개 변수가 단일 객체 (Car, Boat ...) 일 때 모든 것이 잘 작동합니다. 문제는 수집이 구문 분석되는 경우입니다. 따라서, 매개 변수가 컬렉션 인 경우를 설명해야합니다.일반 목록 유형 가져 오기

public class Convert<TSource, TDestination> 
{ 
    public static TDestination ToModel(TSource source) 
    { 
     Model.Map<TSource, TDestination>(); 
    } 
} 
+0

시도 - 당신이 전달하려는 'TSource'를 인수로 사용합니다. 'typeof (TSource)'를 찾고 계신지요? –

+0

Typeof (TSource)가 작동하지 않습니다. – SilverDeveloper

+0

'TSource'가 Collection 일 때만이 아니라 'TSource'가 'MyClass >'과 같은 일반적인 유형 일 때도 복잡해집니다. 실제로 무엇을하려고합니까? – GameScripting

답변

4

당신이 시도 할 수 있습니다 -에 따라 GetGenericArguments

var type = source.GetType().GetGenericArguments()[0]; 

링크 : http://msdn.microsoft.com/fr-fr/library/system.type.getgenericarguments.aspx

+0

흠 ... 나는 너를 이해하지 못한다. – SilverDeveloper

+0

SilverDeveloper GetGenericArguments는 귀하의 제네릭에 배열 형식을 포함 할 수 있기 때문에 귀하의 배열에서 색인에 대한 제네릭 형식을 0으로 반환합니다. 여기서 첫 번째 항목 형식을 얻습니다 –