:'无法转换类型为' System .__ ComObject'的COM对象。到界面类型

时间:2018-01-11 10:06:29

标签: c# asp.net outlook interop

我收到以下错误:

  

System.InvalidCastException:'无法转换类型为' System .__ ComObject'的COM对象。到界面类型' Microsoft.Office.Interop.Outlook.MailItem'。此操作失败,因为QueryInterface调用COM组件上的IID' {00063034-0000-0000-C000-000000000046}'由于以下错误而失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE))。'

出现错误的代码:

foreach (MailItem item in mailItems)
{
}

1 个答案:

答案 0 :(得分:0)

mailItems可能包含循环中定义的Microsoft.Office.Interop.Outlook.MailItem以外的更多对象。最安全的方法是使用object类型来迭代mailItems,然后在运行Outlook处理程序之前使用as运算符检查其类型:

foreach (object item in mailItems)
{
    // try casting to Outlook.MailItem first
    var obj = item as Outlook.MailItem;

    // check if the conversion works and UnRead property can be accessed as well
    if (obj != null && obj.UnRead == true)
    {
        // do something
    }
    else
    {
        // do something else
    }
}