In C# dynamic means no complile-time check and it's gonna have the type of the other side of the = symbol. However GetType is a runtime evaluation, so you always gonna retrieve declared type and not dynamic.
You can read a little bit more here: http://msdn.microsoft.com/en-us/magazine/gg598922.aspx