Это самый простой способ определить, совпадает ли foo или является производным от типа T
foo
T
bool Derives<T>(object foo) { return foo is T; }
и точное совпадение будет
bool ExactMatch<T>(object foo) { return foo.GetType() == typeof(T); }