1

因此,我正在开发的应用程序会提取特定的 Outlook 联系人并显示道具。我遇到的问题是电子邮件地址字段是否存在,因为联系人可能没有电子邮件地址,我需要检查这一点。返回的错误消息是 {"The given key was not present in the dictionary."}。

下面是代码。因此,它抱怨电子邮件地址密钥不存在,因此无法分配它。那么如何在分配之前检查电子邮件密钥是否存在?

EWSForm.EmailAddresses = Contact.EmailAddresses[EmailAddressKey.EmailAddress1].Address;

4

2 回答 2

2

或者使用TryGetValue()which 不会抛出异常,而是返回一个布尔值来指示它是否能够返回带有键的值。

EmailAddress email;
var success = contact.EmailAddresses.TryGetVaue(EmailAddressKey.EmailAddress1, out email);

if (success)
{
    // Use email for task
    SendMail(email.Address);
}
于 2013-04-18T09:59:34.113 回答
1

由于 EmailAddresses 的类型为 EmailAddressDictionary 并且来自 MSDN 文档:

public sealed class EmailAddressDictionary : DictionaryProperty<EmailAddressKey,EmailAddressEntry>

您应该能够做到这一点(使用Contains(Key)此处定义的方法http://msdn.microsoft.com/en-us/library/dd634144(v=exchg.80).aspx):

    if(   
        Contact.EmailAddresses.
            Contains( EmailAddressKey.EmailAddress1 ) 
        ) {
            EWSForm.EmailAddresses = 
                Contact.EmailAddresses[EmailAddressKey.EmailAddress1].Address;
    }
于 2012-07-12T14:06:55.447 回答