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

Kon*_*ten 9 c# outlook outlook-addin

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

  • 这只是因为他们的无知(甚至更少我可以分辨出哪一组是正确的)
  • 它是某种遗留(用于不同版本的Outlook)
  • 这是完全相同的事情(我很确定这是不正确的,但我不知道)
  • 它是一个继承结构(以及什么时候使用)
  • 它只是一种避免类型问题的方法(cast和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);
Run Code Online (Sandbox Code Playgroud)

Sli*_*SFT 16

Folder已被取代MAPIFolder,现已弃用.查看相关的SO帖子.Folder与...相比,还有其他事件挂钩MAPIFolder

Application.Session == Application.GetNamespace("MAPI") - 它们是可以互换的.查看相关的SO帖子.

MAPIFolderGetNamespace() 从Outlook 2003和下方进旁白-他们刚刚被保持向后兼容性.没有办法避免使用VSTO进行类型转换 - 你将不断进行装箱和拆箱.