C# 正在枚举Outlook ContactItem属性
我试图用以下代码枚举Microsoft.Office.Interop.Outlook.ContactItem对象(我们称之为ci)的属性:C# 正在枚举Outlook ContactItem属性,c#,reflection,outlook,enumeration,contactitem,C#,Reflection,Outlook,Enumeration,Contactitem,我试图用以下代码枚举Microsoft.Office.Interop.Outlook.ContactItem对象(我们称之为ci)的属性: System.Reflection.BindingFlags bf = System.Reflection.BindingFlags.Default; foreach (System.Reflection.PropertyInfo pi in ci.GetType().GetProperties(bf)) {
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的定义:
使用System.Runtime.InteropServices
namespace Microsoft.Office.Interop.Outlook
{
[Guid("00063021-0000-0000-C000-000000000046")]
[CoClass(typeof(ContactItemClass))]
public interface ContactItem : _ContactItem, ItemEvents_10_Event
{
}
}
这就是_ContactItem的定义(为了简单起见,我只保留了3个道具):
谁能帮帮我吗
提前谢谢
Bob您不需要手动定义接口。只需在C#项目中添加对“Microsoft Outlook XX.0类库”的引用,然后使用类似以下代码:
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();
}
}
}
希望这有帮助
--坦率的
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();
}
}
}