我想迭代一个联系人属性,并将包含单词“Number”的那些添加到带有值的列表中,我尝试使用反射,但它不起作用。
以下示例代码
使用System; 使用System.Collections; 使用System.Collections.Generic; 使用System.Reflection; 使用Microsoft.Office.Interop.Outlook;
命名空间DuplicateNumbers { 公共类ContactService { public ContactItem联系人{get;私人集; }
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);
}
}
}
}
答案 0 :(得分:1)
答案 1 :(得分:0)
原因它不起作用 - 它是一个COM对象。您应该使用CDO空间中的属性。
答案 2 :(得分:0)
这似乎能够访问Outlook.ContactItem属性。 Enumerating Outlook ContactItem properties