Как определить свойство типа «InvalidOperationException» в коллекции? - PullRequest
0 голосов
/ 12 ноября 2010

Рассмотрим следующий код vb.net для служебной надстройки (для доступа):

td = db.TableDefs(objectName)
For Each fld In td.Fields
    For Each fldprp In fld.Properties

        Debug.Print(fldprp.Value.ToString())

    Next
Next

переменная "db" представляет собой .net-представление результата возврата vba для доступа из "Приложения".CurrentDb ()».«td» имеет тип «DAO.TableDefClass».

Этот код вызывает исключение типа «InvalidOperationException», когда значение свойства fldprp.value не может быть определено (в Visual Studio оно отображается как{"Недопустимая операция."} В окне просмотра).Однако, fldprp.name доступен.

Есть только несколько свойств, с которыми это происходит.Я хотел бы иметь возможность перебрать все свойства fld.properties и вывести значения, но ТОЛЬКО если это не исключение.

Я почти уверен, почему это происходит (некоторые свойства недоступны в этом контексте).Что мне нужно знать, так это как обнаружить это во время выполнения, чтобы я мог пропустить свойство.

Кажется, я не могу найти решение, которое будет работать.Помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 12 ноября 2010

Внутри тела внутреннего цикла поместите это сверху:

If TypeOf fldprp Is InvalidOperationException Then Continue

http://msdn.microsoft.com/en-us/library/0ec5kw18%28VS.80%29.aspx

Я не знаю вашей конкретной ситуации, но я бы предложилиспользование явного фильтра для типов объектов, которые вы хотите включить вместо фильтрации out тех, которые вы не хотите включать.

...