2012-09-10 10 views
6

Non sono chiaro sulla differenza tra le classi Folder e MAPIFolder nel namespace Outlook. Quando ho rivedere il codice in rete, alcuni usano il primo, mentre altri usano l'altra sintassi e non posso stabilire se:Differenza tra Outlook.Folder e Outlok.MAPIFolder

  • è solo a causa della loro ignoranza (e tanto meno posso dire quale gruppo è quello giusto)
  • è una sorta di eredità (utilizzo per le diverse versioni di Outlook)
  • è la stessa cosa (cosa sono abbastanza sicuro che non è vero, ma non si sa mai)
  • si tratta di un struttura ereditaria (e cosa usare quando)
  • è semplicemente un modo per evitare problemi di tipo (casting e as -ing)
  • è altra ragione (s) del tutto (e in caso affermativo, quale)

Ecco il codice che sto utilizzando per l'ottenimento di quei due.

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

risposta

13

Folder ha superato MAPIFolder which is now deprecated. Vedi related SO post. Folder ha hook di eventi aggiuntivi rispetto a MAPIFolder

Application.Session == Application.GetNamespace("MAPI") - sono intercambiabili. Vedi related SO post.

MAPIFolder e GetNamespace() sono riportati da Outlook 2003 e di seguito - sono stati mantenuti per compatibilità con le versioni precedenti. Non c'è modo di evitare il casting di tipi con VSTO: sarai costantemente in box e unboxing.

+0

Splendido! Molto informativo. Come sempre... –