Чтение настраиваемых полей из шаблона документа Word

Я написал некоторый код для добавления настраиваемых полей в шаблон документа Word на основе информации в Как добавить пользовательские свойства в документ Word с помощью .NET 4?

Это работает, но выдает исключение, если поле уже существует. Поэтому я хотел бы прочитать существующие настраиваемые поля, чтобы проверить, что уже есть.

Я написал функцию на основе информации на http://msdn.microsoft.com/en-us/library/dhxe2d75(v=vs.110).aspx

но он падает на первой итерации цикла foreach.

Если настраиваемых свойств нет, исключение не выдается.

Что я делаю не так?


Первое случайное исключение типа System.InvalidCastException в неизвестном модуле. Дополнительная информация: невозможно привести COM-объект типа «System.__ComObject» к типу интерфейса «Microsoft.Office.Core.DocumentProperty». Эта операция завершилась неудачно, так как вызов QueryInterface компонента COM для интерфейса с IID "{2DF8D04E-5BFA-101B-BDE5-00AA0044DE52}" завершился неудачей из-за следующей ошибки: такой интерфейс не поддерживается (исключение из HRESULT: 0x80004002 (E_NOINTERFACE)) .

    private bool PropertyExists(Word.Document Document, string PropertyName)
    {

        bool _bRet = false;
        foreach (Microsoft.Office.Core.DocumentProperty _property in Document.CustomDocumentProperties)
        {
            if (_property.Name == PropertyName)
            {
                _bRet = true;
            }
        }

        return _bRet;
    }

person cm5053    schedule 09.09.2014    source источник