Question

J'ai un tableau d'objets de classe de base dans lequel j'ai typecasté plusieurs objets de classe enfants différents et je le passe à un sous-vi. Existe-t-il un moyen permettant de connaître le type d'origine de l'objet de chaque élément individuel du tableau?

Merci ...

Était-ce utile?

La solution

Pour la postérité, cela a été transféré dans le LAVA forums. L'utilisateur Aristos Queue, l'un des développeurs des fonctionnalités OO natives de LabVIEW, a répondu comme suit:

  

L'utilisation d'une méthode de répartition dynamique dans chaque classe est la méthode recommandée, mais il est recommandé de créer une méthode faisant tout ce que vous essayez de faire. Je suppose que vous pensez à une méthode de répartition dynamique qui renvoie le nom ou l’ID de l’objet afin que vous puissiez dire: "Est-ce égal à cela?" Ok, alors ce doit être cette classe ... " et puis vous faites Action X si c'est cette classe. Si vous écrivez une méthode de répartition dynamique ActionX.vi et que vous la substituez ensuite de manière appropriée, vous économiserez sur les performances et aurez beaucoup plus de temps pour la maintenance du code à l'avenir.

     

Vous pouvez également utiliser le nœud To More Specific pour vérifier si un objet donné peut être converti en un type donné - ceci permet de tester l'héritage par opposition à la comparaison de nom ou d'ID qui ne fait que l'équivalence de type. Si le nœud To More Specific renvoie une erreur, il ne s'agit pas du type de destination.

     

Vos options sont donc (par ordre de préférence):

     
      
  • méthode d'envoi dynamique qui effectue l'action
  •   
  • Noeud To More Plus spécifique pour faire des tests de type
  •   
  • méthode d'envoi dynamique renvoyant le nom / l'ID de la classe de l'objet
  •   
  • Obtenir le chemin d'accès au fichier LabVIEW Object.vi (livré avec vi.lib dans LabVIEW 8.5 mais non ajouté aux palettes jusqu'à LabVIEW 8.6)
  •   

Autres conseils

NI a un bon aperçu de LVOOP , à savoir incontournable, car OO est implémenté de manière unique pour LabVIEW.

Avez-vous essayé la solution sur une version plus générique class 'et' à plus spécifique fonctions de la classe sur la palette de contrôle de l'application?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top