Pregunta

Tengo una matriz de objetos de clase base en la que he tipificado muchos objetos de clase secundaria diferentes y los estoy pasando a un sub vi. ¿Hay alguna forma de que pueda averiguar el tipo original del objeto de cada elemento individual en la matriz?

Gracias ...

¿Fue útil?

Solución

Para la posteridad, esto se colocó de forma cruzada en LAVA foros. El usuario Aristos Queue, uno de los desarrolladores de las características OO nativas de LabVIEW, respondió con lo siguiente:

  

El uso de un método de envío dinámico en cada clase es la forma recomendada de manejar esto, aunque la recomendación es crear un método que haga lo que sea que esté tratando de hacer. Supongo que estás pensando en un método de envío dinámico que devuelve un nombre o una ID del objeto para que puedas decir, "¿Es igual a esto? Ok, entonces debe ser esta clase ... " y luego haces la acción X si es esa clase. Si escribe un método de envío dinámico ActionX.vi y luego lo reemplaza adecuadamente, se ahorrará en el rendimiento y tendrá un tiempo mucho más fácil para el mantenimiento del código en el futuro.

     

También puede usar el nodo Para más específico para probar si un objeto dado puede ser abatido a un tipo dado; esto permite la prueba de herencia en lugar del nombre o la comparación de ID que solo hace equivalencia de tipo. Si el nodo Para más específico devuelve un error, entonces no es del tipo de destino.

     

Así que sus opciones son (en orden de preferencia):

     
      
  • método de envío dinámico que realiza la acción
  •   
  • Para un nodo más específico para realizar pruebas de tipo
  •   
  • método de envío dinámico que devuelve el nombre / ID de la clase del objeto
  •   
  • Obtenga la ruta de LabVIEW Object.vi (enviado en vi.lib en LabVIEW 8.5 pero no se agrega a las paletas hasta LabVIEW 8.6)
  •   

Otros consejos

NI tiene una buena descripción general de LVOOP que es una lectura obligatoria, ya que OO se implementa de una manera única para LabVIEW.

¿Has probado el ' a más genérico class 'and' para obtener información más específica funciones de la clase ', en la paleta de control de la aplicación?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top