Pergunta

Eu tenho uma matriz de objeto classe base para que eu typecasted muitos objetos de classe criança diferentes e estou passando-a para um sub vi. Existe alguma maneira pela qual eu posso descobrir o tipo original do objeto de cada um dos elementos individuais na matriz?

Obrigado ...

Foi útil?

Solução

Para a posteridade, este foi crossposted ao fóruns LAVA . O usuário Aristos fila, um dos desenvolvedores de recursos OO nativas do LabVIEW, respondeu com o seguinte:

Usando um método de expedição dinâmica em cada classe é a maneira recomendada de lidar com isso, embora a recomendação é criar um método que faz tudo o que é que você está tentando fazer. Eu estou supondo que você está pensando de um método de expedição dinâmica que retorna um nome ou ID do objeto para que você pode dizer: "É igual a este? Ok, então ele deve ser esta classe ..." e então você fazer a ação X se é essa classe. Se você escrever um método de expedição dinâmica ActionX.vi e, em seguida, substituí-lo apropriadamente, você vai salvar a si mesmo sobre o desempenho e ter tempo muito mais fácil para a manutenção do código no futuro.

Você também pode usar o nó Para mais específico para testar se um determinado objeto pode ser abatido para um determinado tipo - isso permite testar herança em oposição ao nome ou comparação ID que só faz Tipo de equivalência. Se o nó Para mais específico retorna um erro, então não é do tipo de destino.

Assim, as opções são (em ordem de preferência):

  • método de expedição dinâmica que faz a ação
  • Para nó mais específicos para fazer testes de tipo
  • método de expedição dinâmica que nome retornos / ID da classe do objeto
  • Obter Caminho do LabVIEW Object.vi (enviado em vi.lib no LabVIEW 8.5, mas não adicionadas às paletas até LabVIEW 8.6)

Outras dicas

NI tem uma boa visão geral de LVOOP que é uma leitura obrigatória, já que OO é implementado de uma forma única para LabVIEW.

Você já tentou o ' a mais genérico classe 'e' para mais específico classe ' funções, na paleta de controle de aplicativos?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top