Domanda

Ho un array di oggetti di classe base in cui ho scritto a macchina molti diversi oggetti di classe figlio e lo sto passando a un sub vi. Esiste un modo per scoprire il tipo originale dell'oggetto di ogni singolo elemento dell'array?

Grazie ...

È stato utile?

Soluzione

Per i posteri, questo è stato indirizzato al LAVA . L'utente Aristos Queue, uno degli sviluppatori delle funzionalità OO native di LabVIEW, ha risposto con il seguente:

  

L'uso di un metodo di invio dinamico in ogni classe è il modo consigliato di gestirlo, sebbene la raccomandazione sia quella di creare un metodo che faccia qualunque cosa tu stia cercando di fare. Immagino che stai pensando a un metodo di invio dinamico che restituisce un nome o un ID dell'oggetto in modo da poter dire "È uguale a questo? Ok, allora deve essere questa classe ... " e poi fai Action X se è quella classe. Se si scrive un metodo di invio dinamico ActionX.vi e lo si sovrascrive in modo appropriato, si risparmierà sulle prestazioni e si avrà molto più tempo per la manutenzione del codice in futuro.

     

Puoi anche utilizzare il nodo A più specifico per verificare se un determinato oggetto può essere trasferito a un determinato tipo: ciò consente il test di ereditarietà rispetto al confronto tra nome o ID che fa solo equivalere al tipo. Se il nodo A più specifico restituisce un errore, non è del tipo di destinazione.

     

Quindi le tue opzioni sono (in ordine di preferenza):

     
      
  • metodo di invio dinamico che esegue l'azione
  •   
  • A nodo più specifico per eseguire il test del tipo
  •   
  • metodo di invio dinamico che restituisce nome / ID della classe dell'oggetto
  •   
  • Ottieni percorso di LabVIEW Object.vi (spedito in vi.lib in LabVIEW 8.5 ma non aggiunto alle palette fino a LabVIEW 8.6)
  •   

Altri suggerimenti

NI ha una buona panoramica di LVOOP che è una lettura obbligata, poiché OO è implementato in modo unico per LabVIEW.

Hai provato " a più generico class "e" a più specifici class ", nella palette di controllo dell'applicazione?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top