Есть ли способ проверить, существует ли свойство, перед попыткой получить свойство через PropertyAccessor?
Я использую приведенную ниже функцию, используя Outlook PropertyAccessor, чтобы вернуть строковое значение свойства , Если свойство не существует, функция перехватывает ошибку и возвращает строку с нулевым значением. Я записываю ошибку, используя метод debug.writeline, чтобы визуально определить, какая ошибка выдается - единственная ошибка, с которой я действительно сталкиваюсь, это Исключение: 'System.Runtime.InteropServices.COMException , и это обычно связано свойство неизвестно или не может быть найдено. Передаваемый DASL и имена свойств правильны и работают - однако не все электронные письма имеют эти свойства - они создаются независимым поставщиком программного обеспечения.
...
using Outlook = Microsoft.Office.Interop.Outlook;
...
private string GetPropertyString(Outlook.PropertyAccessor pa, string property)
{
string retVal = null;
try
{
retVal = (string)pa.GetProperty(property);
}
catch (Exception ex)
{
retVal = null;
Debug.WriteLine("OutlookProperties - GetPropertyString() - Error:=" + ex.Message);
//throw;
}
finally
{
}
return retVal;
}
Когда свойство не существует, выдается исключение, и пока он перехватывается, он, похоже, не обрабатывается (должным образом) - вывод:
Исключение: «System.Runtime.InteropServices.COMException» в Office777.dll
OutlookProperties - GetPropertyString () - Ошибка: = Свойство "http://schemas.microsoft.com/mapi/string/ {41FFBD02-4241-4EBD-A7B3-93DD2DF86CA9} / CaseGUID" неизвестно или не может быть найдено.
Большое спасибо заранее