因此,我正在处理的应用程序会提取特定的Outlook联系人并显示道具。我遇到的问题是,如果电子邮件地址字段存在,因为联系人可能没有电子邮件地址,我需要检查这一点。正在返回的错误消息是{“字典中没有给定的密钥。”}。
以下是代码。因此,它抱怨电子邮件地址密钥不存在,因此无法分配。那么如何在分配之前检查电子邮件密钥是否存在?
EWSForm.EmailAddresses = Contact.EmailAddresses[EmailAddressKey.EmailAddress1].Address;
答案 0 :(得分:2)
或者使用不会引发异常的TryGetValue()
,而是返回一个布尔值来指示它是否能够使用键返回值。
EmailAddress email;
var success = contact.EmailAddresses.TryGetVaue(EmailAddressKey.EmailAddress1, out email);
if (success)
{
// Use email for task
SendMail(email.Address);
}
答案 1 :(得分:1)
由于EmailAddresses的类型为EmailAddressDictionary,并且来自MSDN文档:
public sealed class EmailAddressDictionary : DictionaryProperty<EmailAddressKey,EmailAddressEntry>
您应该能够这样做(使用http://msdn.microsoft.com/en-us/library/dd634144(v=exchg.80).aspx中定义的Contains(Key)
方法):
if(
Contact.EmailAddresses.
Contains( EmailAddressKey.EmailAddress1 )
) {
EWSForm.EmailAddresses =
Contact.EmailAddresses[EmailAddressKey.EmailAddress1].Address;
}