2012-09-10 19 views
6

No tengo claro la diferencia entre las clases Folder y MAPIFolder en el espacio de nombres Outlook. Cuando pienso en el código en la red, algunos utilizan la primera, mientras que otros utilizan la otra sintaxis y no puedo determinar si:Diferencia entre Outlook.Folder y Outlok.MAPIFolder

  • es sólo debido a su ignorancia (y aún menos que puedo decir a qué grupo es la correcta)
  • que es algún tipo de legado (el uso de diferentes versiones de Outlook)
  • que es la misma cosa (algo que estoy bastante seguro de que no es cierto, pero uno nunca sabe)
  • es una estructura de herencia (y qué usar cuando)
  • es simplemente una forma de evitar problemas de tipo (fundición y as -ing)
  • es otra razón (s) completo (y si es así, lo que)

Aquí está el código que estoy utilizando para la obtención de los dos.

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

Respuesta

13

Folder ha superado MAPIFolder which is now deprecated. Ver related SO post. Folder tiene ganchos de eventos adicionales en comparación con MAPIFolder

Application.Session == Application.GetNamespace("MAPI") - son intercambiables. Ver related SO post.

MAPIFolder y GetNamespace() son extensiones de Outlook 2003 y versiones posteriores; solo se han conservado para compatibilidad con versiones anteriores. No hay forma de evitar el lanzamiento de texto con VSTO: constantemente estará boxeando y desempacando.

+0

Splendid! Muy informativo. Como siempre... –