Como obter o tipo de T de um membro de uma classe ou método genéric

Digamos que eu tenho um membro genérico em uma classe ou método, então:

public class Foo<T>
{
    public List<T> Bar { get; set; }

    public void Baz()
    {
        // get type of T
    }   
}

Quando instanciamos a classe, oT torna-seMyTypeObject1, para que a classe tenha uma propriedade de lista genérica:List<MyTypeObject1>. O mesmo se aplica a um método genérico em uma classe não genérica:

public class Foo
{
    public void Bar<T>()
    {
        var baz = new List<T>();

        // get type of T
    }
}

Gostaria de saber que tipo de objetos a lista da minha classe contém. Portanto, a propriedade da lista chamadaBar ou a variável localbaz, contém que tipo deT?

Eu nao posso fazerBar[0].GetType(), porque a lista pode conter zero elementos. Como eu posso fazer isso

questionAnswers(17)

yourAnswerToTheQuestion