Object это ведь родитель всех классов. Как родительский класс может знать кто его наследовал и какое он имеет значение? Тот же самый методы GetType(), этот метод максимум мог что дать так это тип Object, родители ведь не знают о производных классов.
Или вот это:
public static void Main(string[] args)
{
object str = "abc";
str = 1;
Console.WriteLine(str);
}
Это как бы строка, но изменив значение уже становиться int-ом. Как object может быть чему то ровна?