3

多くの異なる子クラス オブジェクトを型キャストし、それをサブ vi に渡している基本クラス オブジェクト配列があります。配列内の個々の要素のオブジェクトの元の型を見つける方法はありますか?

ありがとう ...

4

2 に答える 2

3

後世のために、これはLAVAフォーラムにクロスポストされました。LabVIEWのネイティブOO機能の開発者の1人であるユーザーAristosQueueは、次のように答えました。

これを処理するには、すべてのクラスで動的ディスパッチメソッドを使用することをお勧めしますが、実行しようとしていることをすべて実行するメソッドを作成することをお勧めします。オブジェクトの名前またはIDを返す動的ディスパッチメソッドを考えていると思います。これにより、「これと同じですか?わかりました。このクラスである必要があります...」と言うことができます。そのクラスの場合は、アクションXを実行します。動的ディスパッチメソッドActionX.viを作成し、それを適切にオーバーライドすると、パフォーマンスを節約でき、将来のコードメンテナンスにかかる時間を大幅に短縮できます。

To More Specificノードを使用して、特定のオブジェクトを特定のタイプにダウンキャストできるかどうかをテストすることもできます。これにより、タイプの同等性のみを行う名前またはIDの比較とは対照的に、継承テストが可能になります。To More Specificノードがエラーを返した場合、それは宛先タイプではありません。

したがって、オプションは(優先順に)次のとおりです。

  • アクションを実行する動的ディスパッチメソッド
  • タイプテストを行うためのより具体的なノードへ
  • オブジェクトのクラスの名前/IDを返す動的ディスパッチメソッド
  • LabVIEW Object.viのパスを取得します(LabVIEW 8.5のvi.libに同梱されていますが、LabVIEW 8.6までパレットに追加されていません)
于 2008-09-30T20:23:27.510 に答える
1

OO は LabVIEW に独自の方法で実装されているため、NI はLVOOP の概要を説明しています。これは必読です。

アプリケーション コントロール パレットで、 「より一般的なクラスへ」および「より特定のクラスへ」機能を試しましたか?

于 2008-09-26T15:14:57.190 に答える