I have the following spec to help illustrate the problem:
class when_getting_type_of_generic_argument_using_subtype_instance { static GenericTypeTester _gene
Just add the constrait "class" to your method :
class GenericTypeTester { public Type Test(T dog) where T : IPet, class { return typeof (T); } }