Let’s assume you have following C# interface on .NET:

[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("1A6CC729-1D5C-4A5E-975E-1B34AD7AF6B4 ")]
public interface IFoo
{
    int CreateNew();
}

You implemented this interface in some object and passed it to native side as IUnknown. And now you want to consume this interface as IDispatch. Scripting is good example. But If you try to call QueryInterface for IDispatch on this interface it will return E_NOINTERFACE. Looks like you out of luck.

But if you try to open mscorlib.tlb you will find interface _Object with GUID {65074F7F-63C0-304E-AF0A-D51741CB4A8D} that inherits from IDispatch. And if you call QueryInterface for _Object