2013-10-26 2 views
0

T가 List<string> (또는 List<MyClass>)이라는 것을 알고 있습니다. 이 문자열 목록을 반환 할 수 있도록 반성이나 무언가를 어떻게 표시해야합니까?뒤에 숨겨진 수업을 알았을 때 T를 돌려주는 방법?

public T Deserialize<T>(string response) 
{ 
    //just example 
    string[] words = response.Split(' '); 
    List<string> wordsList = words.ToList(); 
    //? 
    return wordsList; 
} 

배경 : Deserialize 메서드를 사용하여 html 데이터를 구문 분석합니다. 그것은 API가없는 웹 사이트에서 사용되는 myJson.myDeserialize 메서드와 같은 것입니다.

+0

'왜'목록 '로 반환 유형을 표시하지? –

+0

'T가'List '이면 목록의 내용을 원하겠습니까? –

+2

이 질문에 * 추상화 * 태그가 있지만 태그가 있어야한다고 생각합니다. * 새는 추상화 * – GolfWolf

답변

1

이 작업을 수행하는 데는 어색한 속임수가 있습니다. 먼저 인스턴스를 object으로 변환해야합니다.

public T Deserialize<T>(string response) 
{ 
    string[] words = response.Split(' '); 
    List<string> wordsList = words.ToList(); 

    return (T)(object)wordsList; 
} 

발신자가 List<string>을 제네릭 유형으로 지정한 것으로 가정합니다. 당신은`목록 을 반환해야하는 경우

var x = Deserialize<List<string>>("hello world"); // gives "hello", "world" 
var y = Deserialize<int>("hello world");    // throws InvalidCastException