Outlook.Folder和Outlok.MAPIFolder之间的区别

我不清楚命名空间Outlook的类和MAPIFolder类之间的区别。 当我查看网络中的代码时,有些人使用第一个,而其他人使用其他语法,我无法确定是否:

  • 这只是因为他们的无知(甚至更少,我可以分辨哪个群体是正确的)
  • 它是某种遗留(用于不同版本的Outlook)
  • 这是完全相同的事情(我确信这不是真的,但我不知道)
  • 它是一个inheritance结构(以及什么时候使用)
  • 它只是一种避免类型问题的方法(强制转换和asing)
  • 完全是其他原因(如果是这样的话)

这是我用来获取这两个代码的代码。

 Outlook.Folder defaultContactsFolder_1 = this.Application.Session.GetDefaultFolder( Outlook.OlDefaultFolders.olFolderContacts) as Outlook.Folder; Outlook.MAPIFolder defaultContactFolder_2 = this.Application.GetNamespace("MAPI").GetDefaultFolder( Outlook.OlDefaultFolders.olFolderContacts); 

Folder已取代MAPIFolder ,现已弃用 。 查看相关的SOpost 。 与MAPIFolder相比, Folder具有其他事件挂钩

Application.Session == Application.GetNamespace("MAPI") – 它们是可互换的。 查看相关的SOpost 。

MAPIFolderGetNamespace()是从Outlook 2003及以下MAPIFolderinheritance的 – 它们只是为了向后兼容而保留。 没有办法避免使用VSTO进行类型转换 – 你将不断进行装箱和拆箱。