typeof(T) returns a Type instance. and the Type is never equal to AClass
var t1 = typeof(AClass)); // t1 is a "Type" object
var t2 = new AClass(); // t2 is a "AClass" object
t2 is AClass; // true
t1 is AClass; // false, because of t1 is a "Type" instance, not a "AClass" instance