Как проверить наличие свойства в Outlook Interop?

Я пытаюсь определить отправителя электронной почты в Outlook 2007 и выше. В Outlook 2010 у вас есть свойство Sender для объекта MailItem, тогда как в Outlook 2007 вы должны делать это по-другому, как указано в этот вопрос.

Итак, теперь мне нужно знать, поддерживает ли текущая версия Outlook свойство Sender, и если нет, используйте другой метод. Причина этого в том, что я бы предпочел использовать свойство Sender для совместимости с будущими версиями Outlook, а не иметь условие для версии Outlook.

Итак, вопрос в том, как определить, существует ли свойство в Outlook Interop? Очевидно, что это COM-объект, и я не могу использовать здесь отражение.


person devanalyst    schedule 03.08.2012    source источник
comment
вы пробовали подход try..catch? Это часто необходимо в COM-взаимодействии.   -  person Scoregraphic    schedule 03.08.2012
comment
@Scoregraphic, я уже пробовал этот подход, но он не работает. Outlook просто молча выходит из промежуточного состояния, не переходя к блоку catch.   -  person devanalyst    schedule 03.08.2012


Ответы (2)


Я использовал коллекцию MailItem.ItemProperties для проверки свойства «Отправитель». Ниже приведен код

Microsoft.Office.Interop.Outlook.MailItem myMail;

//Code to get the mail
....

Microsoft.Office.Interop.Outlook.ItemProperties mailProps = myMail.ItemProperties;

Microsoft.Office.Interop.Outlook.ItemProperty mailProp = mailProps.Item  ("Sender"); //the parameter is case-sensitive

if(mailProp != null)
{
    //get email address using Sender object
    Microsoft.Office.Interop.Outlook.AddressEntry theSender = myMail.Sender;
}
else
{
    //use alternate method for Outlook 2007 
}
person devanalyst    schedule 03.08.2012

Вы можете использовать IDispatch::GetIDsOfNames чтобы узнать, существует ли свойство

person parapura rajkumar    schedule 03.08.2012
comment
не могли бы вы немного уточнить? Я не знаю, как мне это использовать (и, похоже, до сих пор ни один зарегистрированный пользователь этого не делал) - person Breeze; 06.05.2016