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

时间:2012-09-10 08:12:26

标签: c# outlook outlook-addin

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

  • 这只是因为他们的无知(更不用说我能说出哪一组是正确的)
  • 这是某种遗产(用于不同版本的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);

1 个答案:

答案 0 :(得分:16)

Folder已取代MAPIFolder which is now deprecated。见related SO post。与MAPIFolder

相比,Folder有其他事件挂钩

Application.Session == Application.GetNamespace("MAPI") - 它们是可以互换的。请参阅related SO post

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