Should a ComInterfaceType attribute ever not be InterfaceIsDual

c#, com

Solution

InterfaceIsDual supports both early and late binding. Which makes it pretty desirable to the COM client, it gets to choose between the speed and auto-completion support of early binding and the safety of late binding.

The safety aspect is why it gets downplayed in Microsoft docs, early binding to an interface that was changed later without a corresponding change to the interface [Guid] produces very difficult to diagnose runtime errors. Ranging from access violations to calling the wrong method. COM versioning is a big deal and the hard rules to follow to stay out of trouble are too often skipped because they cause pain.

Problem

I'm implementing an IDispatch interface in managed code C#. Reading through the documentation (yes I know this is a bad idea) it says I can use `InterfaceIsDual`, `InterfaceIsIDispatch` or `InterfaceIsIUnknown` . I want my interface to be late binding so I'd choose `InterfaceIsIDispatch` .. But then some more reading shows that `InterfaceIsDual` should be the same. Will there by any functional difference between choosing the Dual and the Dispatch?

Original source