2012-09-10 11 views
6

Nie jestem jasne, na różnicy między klasami Folder i MAPIFolder w przestrzeni nazw Outlook. Kiedy przejrzeć kod w internecie, niektóre wykorzystywane pierwsze, podczas gdy inni używają pozostałe składni i nie mogę stwierdzić, czy:Różnica między Outlook.Folder i Outlok.MAPIFolder

  • to tylko ze względu na ich niewiedzy (a nawet mniej mogę powiedzieć, która grupa jest właściwa)
  • to jakąś spuściznę (wykorzystanie różnych wersjach programu Outlook)
  • to ta sama rzecz (coś jestem dość pewny nie jest prawdą, ale nigdy nie wiadomo)
  • jest to struktura dziedziczenia (i co używać kiedy)
  • to po prostu sposób na uniknięcie problemów z typem (odlewanie i as -ing)
  • to inny powód (y) w całości (a jeśli tak, to jakie)

Oto kod używam dla uzyskania tych dwóch.

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

Odpowiedz

13

Folder zastąpiła MAPIFolder which is now deprecated. Zobacz related SO post. Folder ma dodatkowe haki zdarzeń w porównaniu do MAPIFolder

Application.Session == Application.GetNamespace("MAPI") - są wymienne. Zobacz related SO post.

MAPIFolder i GetNamespace() są przeniesieniami z programu Outlook 2003 i starszymi - zostały po prostu zachowane pod kątem kompatybilności wstecznej. Nie ma sposobu na uniknięcie odlewania z VSTO - będziesz ciągle boksować i odpinać.

+0

Splendid! Bardzo informujące. Jak zawsze... –