0

私は T がList<string>(またはList<MyClass>) であることを知っています。この文字列のリストを返すことを可能にするリフレクションまたは何かをどのように見えるべきですか?

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

背景: Deserialize メソッドは、html データの解析に使用されます。ウェブサイトで使われている独自の myJson.myDeserialize メソッドのようなもので、API はありません。

4

1 に答える 1

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
于 2013-10-26T10:04:31.283 に答える