2012-09-10 37 views
6

Tôi không rõ ràng về sự khác biệt giữa các lớp FolderMAPIFolder trong không gian tên Outlook. Khi tôi xem xét mã trong mạng, một số sử dụng mã đầu tiên trong khi các mã khác sử dụng cú pháp khác và tôi thực sự không thể xác định xem:Sự khác biệt giữa Outlook.Folder và Outlok.MAPIFolder

  • . là một trong những quyền)
  • đó là một số loại di sản (sử dụng cho các phiên bản khác nhau của Outlook)
  • đó là điều rất giống nhau (một cái gì đó tôi khá chắc chắn là không đúng sự thật nhưng ta không bao giờ biết)
  • nó là một cấu trúc thừa kế (và sử dụng khi nào)
  • nó chỉ đơn giản là một cách để tránh các vấn đề về loại (đúc và as -ing)
  • đó là lý do nào khác (s) hoàn toàn (và nếu như vậy, mà)

Dưới đây là đoạn code tôi đang sử dụng để đạt được những hai.

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

Trả lời

13

Folder đã thay thế MAPIFolder which is now deprecated. Xem related SO post. Folder có móc sự kiện bổ sung so với MAPIFolder

Application.Session == Application.GetNamespace("MAPI") - chúng có thể hoán đổi cho nhau. Xem related SO post.

MAPIFolderGetNamespace() được giám sát từ Outlook 2003 trở xuống - chúng chỉ được giữ để tương thích ngược. Không có cách nào để tránh việc đúc kiểu với VSTO - bạn sẽ liên tục được đấm bốc và unboxing.

+0

Splendid! Rất thông tin. Như mọi khi ... –

Các vấn đề liên quan