2013-10-26 50 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數據。它就像自己的myJson.myDeserialize在網站中使用的方法,它沒有API。

+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 
相關問題