LabVIEW объекты - PullRequest
       12

LabVIEW объекты

3 голосов
/ 26 сентября 2008

У меня есть массив объектов базового класса, в который я набрал много разных дочерних объектов и передаю его в подпункт vi. Есть ли способ, которым я могу узнать оригинальный тип объекта каждого отдельного элемента в массиве?

Спасибо ...

Ответы [ 2 ]

3 голосов
/ 01 октября 2008

Для потомков это было перенесено на форумы LAVA . Пользователь Aristos Queue, один из разработчиков встроенных в LabVIEW OO-функций, ответил следующим:

Использование метода динамической диспетчеризации в каждом классе является рекомендуемым способом решения этой проблемы, хотя рекомендуется создать метод, который будет делать то, что вы пытаетесь сделать. Я предполагаю, что вы думаете о методе динамической отправки, который возвращает имя или идентификатор объекта, чтобы вы могли сказать: «Это равно этому? Хорошо, тогда это должен быть этот класс ...», а затем вы выполните действие X, если это тот класс. Если вы напишите динамический метод диспетчеризации ActionX.vi, а затем соответствующим образом переопределите его, вы сэкономите на производительности и в будущем вам будет намного проще обслуживать код.

Вы также можете использовать узел To More Specific, чтобы проверить, может ли данный объект быть понижен до заданного типа - это позволяет проводить тестирование наследования, а не сравнение имени или идентификатора, которое только эквивалентно типу. Если узел To More Specific возвращает ошибку, он не относится к типу назначения.

Итак, ваши варианты (в порядке предпочтения):

  • метод динамической отправки, который выполняет действие
  • Более конкретный узел для тестирования типов
  • метод динамической отправки, который возвращает имя / идентификатор класса объекта
  • Получить путь к LabVIEW Object.vi (поставляется в vi.lib в LabVIEW 8.5, но не добавляется в палитры до LabVIEW 8.6)
1 голос
/ 26 сентября 2008

NI имеет хороший обзор LVOOP , который необходимо прочитать, поскольку OO реализован уникальным способом для LabVIEW.

Пробовали ли вы функции ' для более общего класса ' и ' для более конкретного класса ' в палитре управления приложения?

...