在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