11

我不清楚 classesFolderMAPIFoldernamespace之间的区别Outlook。当我在网上查看代码时,有些使用第一种,而另一些使用另一种语法,我无法确定是否:

  • 这只是因为他们的无知(更不用说我知道哪个组是正确的)
  • 这是某种遗留物(用于不同版本的 Outlook)
  • 这是一回事(我很确定这不是真的,但永远不知道)
  • 它是一个继承结构(以及何时使用)
  • 这只是一种避免类型问题(强制转换和as-ing)的方法
  • 完全是其他原因(如果是的话,哪个)

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

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);
4

1 回答 1

17

Folder已取代MAPIFolder,现在已弃用。请参阅相关的 SO 帖子FolderMAPIFolder

Application.Session == Application.GetNamespace("MAPI")- 它们是可以互换的。请参阅相关的 SO 帖子

MAPIFolder并且GetNamespace() 是 Outlook 2003 及更低版本的遗留物——它们只是为了向后兼容而保留的。没有办法避免使用 VSTO 进行类型转换 - 您将不断地装箱和拆箱。

于 2012-09-10T14:11:36.620 回答