C# Outlook加载项异常-如何检查Outlook.Item的类型?
我有一个Outlook 2013附加模块C# Outlook加载项异常-如何检查Outlook.Item的类型?,c#,outlook,vsto,outlook-addin,C#,Outlook,Vsto,Outlook Addin,我有一个Outlook 2013附加模块 Outlook.MAPIFolder inboxFolder; Outlook.Items mailInboxItems; private void ThisAddIn_Startup(object sender, EventArgs e) { ... other code --- mailInboxItems = inboxFolder.Items; mailInboxItems.ItemAdd += mailInboxItems
Outlook.MAPIFolder inboxFolder;
Outlook.Items mailInboxItems;
private void ThisAddIn_Startup(object sender, EventArgs e)
{
... other code ---
mailInboxItems = inboxFolder.Items;
mailInboxItems.ItemAdd += mailInboxItems_ItemAdd;
}
private void mailInboxItems_ItemAdd(object item)
{
Outlook.MailItem emailMessage = (Outlook.MailItem)item; // cast error
ProcessEmail(emailMessage);
}
当然,当传入的项目不是Outlook.MailItem类型时,会引发异常:
无法将“System.\u ComObject”类型的COM对象强制转换为接口
键入“Microsoft.Office.Interop.Outlook.MailItem”
如何检查参数“item”是否仅为有效类型,即Outlook.MailItem以避免任何异常?您可以向文件夹中添加不同类型的项目,如
MailItem
,AppointmentItem
等。要使用邮件项目
请使用以下代码:
var emailMessage = item as MailItem;
if(emailMessage == null)
{
retrun;
}
// here you can use emailMessage as MailItem
ProcessEmail(emailMessage);
可以在C#中使用“is”和“as”运算符。有关更多信息,请参阅
Outlook对象模型还提供属性—一个表示Outlook项目的消息类的字符串。在引擎盖下,message类用于标识Outlook中用于显示项目的检查器。第一个检查项目类似于mailitem
if(item is Outlook.MailItem){
Outlook.MailItem emailMessage =item as Outlook.MailItem
ProcessEmail(emailMessage);
}
它将按照您的期望工作 @J.Steen-哦,很好的提示,现在我只需要检查空值!你知道如何把我的范围缩小到邮件项目吗?非常感谢。