In the C# 4.0 demos, I'm seeing lots of code that uses the dynamic type. For example, the following code sets the value of an Excel cell:
excel.Cells[1, 1].Value = ...
However, you can also access the cell in an early bound manner with a cast:
((Range)excel.Cells[1, 1]).Value = ...;
Why don't the Excel COM library just describe the Cell type as a Range type in the first place? Similarly, all the arguments to the following method are dynamic:
excel.ActiveWorkbook.Charts.Add(...)
Why couldn't the arguments have been static? Looking at the Excel object model, there are dynamic types everywhere. Is this due to limitations in the expressiveness in COM? Is there a pattern to when dynamic types rather than static types are used in COM libraries?