在C#中使用COM组件导致InvalidCastException

我有一个COM组件,我们已经使用TLBIMP工具创建了一个interop dll,并且在访问默认接口时,它有时会失败并返回InvalidCastException(无法转换类型System .__ ComObject的COM对象' )在C#中使用COM组件导致InvalidCastException

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声明

coclass MyComponent 

{

[default] interface IMyInterface;

};

任何想法,为什么在上面的功能注释代码失败,出现错误? 也行MyComponent comp = new MyComponentClass()应该返回默认的接口,在这种情况下不应该是LHS变量的类型接口。

回答:

此MSDN博客介绍了类似的错误,并提供有关情况如何发生的一些细节:https://social.msdn.microsoft.com/Forums/vstudio/en-US/b11a0f90-fcc5-487a-b057-632f5415bfc2/problems-with-primary-interop-assembly-versioning?forum=csharpgeneral

而且,这可能是值得一读:http://blogs.agi.com/engine/?p=502

以上是 在C#中使用COM组件导致InvalidCastException 的全部内容, 来源链接: utcz.com/qa/258620.html

回到顶部