How to return T, when I know class which is hidden behind it?

59 views Asked by At

I know that T is List<string> (or List<MyClass>). How should look reflection or something that allow me to return this List of string?

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

Background: Deserialize method is used to parse html data. It is something like own myJson.myDeserialize method used in Website, which does not have API.

1

There are 1 answers

0
Douglas On BEST ANSWER

There is an awkward trick for achieving this: You need to first cast your instance to object.

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

    return (T)(object)wordsList;
}

This assumes that your caller specifies List<string> as the generic type.

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