Vb.net VSTO:当出现非邮件项目时,遍历Outlook收件箱会引发错误
我在visualstudio(VSTO+VB.Net)中有一些代码,可以迭代我的Outlook收件箱中的所有项目。在我的收件箱中出现其他项目(如约会等)之前,代码工作正常 下面的代码经过简化,并遍历排序列表中的所有项。当FolderItem(MailItem类型)与其他类型的项目(例如MeetingItemClass)一起分配时,会出现此问题。提出了一个例外 我明白为什么。。。但我需要一个如何找到解决办法的解决方案。我想处理所有项目,甚至会议项目Vb.net VSTO:当出现非邮件项目时,遍历Outlook收件箱会引发错误,vb.net,outlook,vsto,Vb.net,Outlook,Vsto,我在visualstudio(VSTO+VB.Net)中有一些代码,可以迭代我的Outlook收件箱中的所有项目。在我的收件箱中出现其他项目(如约会等)之前,代码工作正常 下面的代码经过简化,并遍历排序列表中的所有项。当FolderItem(MailItem类型)与其他类型的项目(例如MeetingItemClass)一起分配时,会出现此问题。提出了一个例外 我明白为什么。。。但我需要一个如何找到解决办法的解决方案。我想处理所有项目,甚至会议项目 Dim InboxFolder As Outlo
Dim InboxFolder As Outlook.MAPIFolder
Dim FolderItem As Outlook.MailItem
Dim FolderItems As Outlook.Items
Dim ItemNo As Integer
*** removed code that finds the inbox object 'InboxFolder' ***
ItemNo = 1
FolderItems = InboxFolder.Items
FolderItems.Sort("[ReceivedTime]", True)
Do While ItemNo <= FolderItems.Count
FolderItem = FolderItems(ItemNo)
*** Do some operations on each inbox-object here ***
ItemNo = ItemNo + 1
Loop
Dim InboxFolder作为Outlook.MAPIFolder
将FolderItem设置为Outlook.MailItem
将文件夹项设置为Outlook.Items
Dim ItemNo作为整数
***已删除查找收件箱对象“InboxFolder”的代码***
ItemNo=1
FolderItems=InboxFolder.Items
排序(“[ReceivedTime]”,True)
Do While ItemNo一种可能性是将FolderItem定义为Object,然后
- …在将类型分配给特定类型的变量之前,请先检查该类型
及
- …如有必要,将其强制转换为while循环中的特定类型
类似于此(未经测试):
If TypeOf FolderItem Is MailItem Then
Dim mailItm As MailItem = DirectCast(FolderItem, MailItem)
'Do something
ElseIf TypeOf FolderItem Is MeetingItem Then
Dim meetItm As MeetingItem = DirectCast(FolderItem, MeetingItem)
'Do something
End If