我有一个COM组件,我们使用TLBIMP工具创建了一个interop dll,当访问默认接口时,它有时会失败并出现InvalidCastException(无法转换类型为System .__ ComObject'的COM对象)
CORE::evalbytes
IDL声明
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;
}
知道为什么上面函数中的注释代码会因错误而失败? 同样,MyComponent comp = new MyComponentClass()行应该返回默认接口,在这种情况下,LHS变量不应该是interface类型。
答案 0 :(得分:-1)
此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