Jeff / Tony -
Forgive my elementary question here; just trying to better understand....
I've read that when using the dynamic type, "you do not have to be concerned about whether the object gets its value from a COM API, from a dynamic language such as IronPython, from the HTML Document Object Model (DOM), from reflection, or from somewhere else," but I do not understand how or why one would not need to reference the Interop assembly.
How does one access the Application.AcadApplication Object without the appropriate reference, and only System[.*] using statements?
The interop assembly defines a statically-typed wrapper for COM types, which allows them to be treated like they were managed types (e.g., you get intellisense and static type-checking).
If you don't reference the interop assemblies, then you use the AcadApplication property of the Application object directly, which is typed as System.Object, and requires that you use either reflection or dynamic to access it.
Using reflection involves calling GetType().InvokeMember("membername", blah blah blah ) (you can find plenty of examples of late-bound use of AutoCAD COM objects via reflection here, by searching for 'GetType().InvokeMember').
With dynamic, the runtime basically does all of that same work that you must do manually when using reflection.