Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Перебор свойств контактов с помощью Outlook

Автор вопроса: CommunityОтветов: 3

Я хочу перебрать свойства контактов и добавить те, которые содержат слово Number, в список со значением, я пытаюсь использовать отражение, но это не работает.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.Office.Interop.Outlook;

namespace DuplicateNumbers
{
    public class ContactService
    {
        public ContactItem Contact { get; private set; }

        private IDictionary<string,string> phoneNumbers = new Dictionary<string, string>();

        public ContactService(ContactItem contact)
        {
            Contact = contact;
        }

        public IDictionary<string,string> PhoneNumbers
        {
            get
            {
                if(phoneNumbers.Count == 0)
                {
                    PopulatePhoneNumbers();
                }
                return phoneNumbers;
            }
        }

        private void PopulatePhoneNumbers()
        {
            _ContactItem ci = Contact as _ContactItem;
            MemberInfo[] members = ci.GetType().FindMembers(MemberTypes.All, BindingFlags.Instance, (m,criteria) => true, null);
            foreach (var info in members)
            {
                if(info.Name.Contains("Number"))
                {
                    phoneNumbers.Add(info.Name,info.Value);
                }
                Console.WriteLine(info);
            }
        }
    }
}
  • Не могли бы вы описать, в чем проблема? И тут нет собственно вопроса. Jeffrey L Whitledge 15.10.2008
  • https://stackoverflow.com/questions/1323069/enumerating-outlook-contactitem-properties кажется, может получить доступ к свойствам ContactItem. Sanjay Karia 07.12.2019
  • Это, кажется, может получить доступ к свойствам контактов Sanjay Karia 07.12.2019

outlookvsto

Ответы

Ответ 1 · рейтинг 1 · Paige Watson

Попробуйте использовать MAPI CDO.

Вот сайт Microsoft, с которого можно начать: Как использовать CDO для чтения адресов MAPI

Вот несколько блогов MAPI, которые также помогут:

Ответ 2 · IgorM

Конечно, это не работает - это COM-объект. Вы должны использовать свойства из пространства CDO.

Ответ 3 · Sanjay Karia

Кажется, это может получить доступ к свойствам Outlook.ContactItem. Перечисление свойств Outlook ContactItem

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы