Вы должны уточнить, хотите ли вы проверить, является ли объект точно определенного типа или присваиваемым от определенного типа. Например:
public class Foo : Bar {}
И предположим, у вас есть:
Foo foo = new Foo();
Если вы хотите узнать, не является ли foo не Bar (), вы должны сделать это:
if(!(foo.GetType() == tyepof(Bar))) {...}
Но если вы хотите убедиться, что foo не является производным от Bar, тогда легко проверить использование ключевого слова as.
Bar bar = foo as Bar;
if(bar == null) {/* foo is not a bar */}