当前位置: 代码迷 >> .NET组件控件 >> System.InvalidCastException:Unable to cast COM object of type 'System.
  详细解决方案

System.InvalidCastException:Unable to cast COM object of type 'System.

热度:12867   发布时间:2013-02-25 00:00:00.0
COM 组件调用 QueryInterface 失败原因?
大家好,请教一个问题: C#调用Microsoft.Office.Outlook.MailItem;并且在程序中用MailItem类做了一些操作。编辑的时候,并且在自己的电脑上操作的时候,没有问题,可是一到其他电脑上就报以下错误,程序并且会自动关闭。

System.InvalidCastException:Unable to cast COM object of type 'System._ComObject' to interface type 'Microsoft.Office.Outlook.MailItem'. This operation failed because the QueryInterface call on the COM component for the interface IID '{00063034-0000-0000-C000-000000000046}'failed due to the following error: No such interface supported(Exception from HRESULT:0x60004002(E_NOINTERFACE)). 
at JobsDB.EmailAnalyzerSystem.EmailAnalyzer.AnalyzeAll()
at JobsDB.EmailAnalyzerSystem.MailForm.StartAnalyze(Boolean blnUnsubsribe)

请高手们帮帮忙啊,很急的,先谢谢啦!!!

------解决方案--------------------------------------------------------
如果有代码就容易分析了。

不过看错误应该是将其他类型的对象强制转换成MailItem了。因为在outlook中MAPIFromFolder可以放多种类型的Item.
这样当你使用下面代码时就会出错

For Each MItem In MAPIFromFolder.Items

要用类似下面的代码

for(int i = 0 ;i < oItems.Count ; i++)
{
MailItem omsg = oItems.Item(i) as MailItem
if (omsg != null)
{
}
}
以上代码没有经过编译,仅供参考
------解决方案--------------------------------------------------------
类型
foreach ( MailItem oItem in theMailFolder.Items.OfType<MailItem>()) { 


http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/24942568-6658-47d7-b01b-6b1a89ca6812
  相关解决方案