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;
}

背景:反序列化方法用于解析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 回答