i have a COM component, we have created a interop dll using TLBIMP tool and when accesing the default interface, it sometimes fails with InvalidCastException (Unable to cast COM object of type System.__ComObject’ )
private void SomeMethod(IMyInterface iObj)
{
**//Following cause error InvalidCastException, not always but Intermittently**
//MyComponent comp = new MyComponentClass();
//comp= iObj as MyComponent
**//The below code works fine.**
IMyInterface comp = new MyComponentClass();
comp = iObj;
}
IDL declaration
coclass MyComponent
{
[default] interface IMyInterface;
};
any idea why the commented code in the above function fails with the error ? also the line MyComponent comp = new MyComponentClass() should be returning the default interface, in that case shouldn't the LHS variable be of type interface.
This MSDN blog describes a similar error and provides some details about how that situation can happen: https://social.msdn.microsoft.com/Forums/vstudio/en-US/b11a0f90-fcc5-487a-b057-632f5415bfc2/problems-with-primary-interop-assembly-versioning?forum=csharpgeneral
Also, this is probably worth reading: http://blogs.agi.com/engine/?p=502