2009-08-24 4 views
3

내가 Microsoft.Office.Interop.Outlook.ContactItem 개체의 속성을 열거하기 위해 노력하고있어이 코드 (의이 CI를 부르 자) :열거 전망 ContactItem 속성

 System.Reflection.BindingFlags bf = System.Reflection.BindingFlags.Default; 

     foreach (System.Reflection.PropertyInfo pi in ci.GetType().GetProperties(bf)) 
     { 
      Console.WriteLine("Property Info {0}", pi.Name); 
     } 

을 실제로 여러 가지 시도했습니다 BindingFlag 값의 조합은 반환되지만 속성은 반환되지 않습니다.

다음은 ContactItem이 정의 된 방법입니다. using System.Runtime.InteropServices;

using System; 
using System.Runtime.InteropServices; 

namespace Microsoft.Office.Interop.Outlook 
{ 
    [TypeLibType(4160)] 
    [Guid("00063021-0000-0000-C000-000000000046")] 
    public interface _ContactItem 
    { 
     [DispId(14848)] 
     string Account { get; set; } 
     [DispId(63511)] 
     Actions Actions { get; } 
     [DispId(14913)] 
     DateTime Anniversary { get; set; } 
    } 
} 

누군가가 나를 도울 수 :

namespace Microsoft.Office.Interop.Outlook 
{ 
    [Guid("00063021-0000-0000-C000-000000000046")] 
    [CoClass(typeof(ContactItemClass))] 
    public interface ContactItem : _ContactItem, ItemEvents_10_Event 
    { 
    } 
} 

이 _ContactItem가 정의하는 방법이다 (I은 단순 만 3 소품을 보관했습니다)? 사전에

감사

답변

5

수동으로 인터페이스를 정의 할 필요가 없습니다. "Microsoft Outlook XX.0 클래스 라이브러리"에 대한 참조를 C# 프로젝트에 추가 한 다음 다음과 비슷한 코드를 사용하십시오.

using System; 
using Outlook = Microsoft.Office.Interop.Outlook; 

namespace OutlookTest 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Outlook.Application olApplication = new Outlook.Application(); 

      // get nameSpace and logon. 
      Outlook.NameSpace olNameSpace = olApplication.GetNamespace("mapi"); 
      olNameSpace.Logon("Outlook", "", false, true); 

      // get the contact items 
      Outlook.MAPIFolder _olContacts = olNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts); 
      Outlook.Items olItems = _olContacts.Items; 

      foreach (object o in olItems) 
      { 
       if (o is Outlook.ContactItem) 
       { 
        Outlook.ContactItem contact = (Outlook.ContactItem)o; 
        foreach (Outlook.ItemProperty property in contact.ItemProperties) 
        { 
         Console.WriteLine(property.Name + ": " + property.Value.ToString()); 
        } 
       } 
      } 
      Console.WriteLine("Press any key"); 
      Console.ReadKey(); 
     } 
    } 
} 

희망이 있습니다.

- Frank