Consider the following code:
object objFoo = MakeFoo(); // object MakeFoo(){return new Foo();}
MethodInfo methodInfo = typeof(Program).GetMethod(\"Baz\"); // Fo
This would be equivalent to:
object objFoo = MakeFoo();
Foo result = (Foo)objFoo;
There's no real point in casting an object to a type that's unknown at compile time - you won't be able to use it:
object objFoo = MakeFoo();
UnkownType result = (UknownType)objFoo;
Since you don't know what UknownType is, you won't be able to use any of its methods without resorting to reflection, or to dynamics.