سؤال

لدي مصفوفة كائنات من الفئة الأساسية حيث قمت بكتابة العديد من كائنات الفئة الفرعية المختلفة وقمت بتمريرها إلى sub vi.هل هناك أي طريقة يمكنني من خلالها معرفة النوع الأصلي لكائن كل عنصر على حدة في المصفوفة؟

شكرًا ...

هل كانت مفيدة؟

المحلول

للأجيال القادمة، تم نقل هذا إلى حمم بركانية المنتديات.أجاب المستخدم Aristos Queue، أحد مطوري ميزات OO الأصلية لـ LabVIEW، بما يلي:

يعد استخدام أسلوب الإرسال الديناميكي في كل فصل دراسيًا هو الطريقة الموصى بها للتعامل مع هذا، على الرغم من أن التوصية هي إنشاء طريقة تقوم بكل ما تحاول القيام به.أعتقد أنك تفكر في طريقة إرسال ديناميكية تُرجع اسمًا أو معرفًا للكائن حتى تتمكن من القول، "هل يساوي هذا؟حسنًا، إذن يجب أن تكون هذه الفئة..." ثم تقوم بالإجراء X إذا كانت تلك الفئة.إذا كتبت طريقة إرسال ديناميكية ActionX.vi ثم قمت بتجاوزها بشكل مناسب، فسوف توفر على نفسك الأداء وسيكون لديك وقت أسهل بكثير لصيانة التعليمات البرمجية في المستقبل.

يمكنك أيضًا استخدام العقدة "إلى أكثر تحديدًا" لاختبار ما إذا كان من الممكن تحويل كائن معين إلى نوع معين - وهذا يسمح باختبار الوراثة بدلاً من مقارنة الاسم أو المعرف الذي لا يقوم إلا بنوع التكافؤ.إذا قامت العقدة "إلى أكثر تحديدًا" بإرجاع خطأ، فهذا يعني أنها ليست من نوع الوجهة.

إذن خياراتك هي (حسب التفضيل):

  • طريقة الإرسال الديناميكي التي تقوم بالإجراء
  • إلى عقدة أكثر تحديدًا لإجراء اختبار النوع
  • طريقة الإرسال الديناميكية التي تُرجع اسم/معرف فئة الكائن
  • الحصول على مسار LabVIEW Object.vi (يتم شحنه في vi.lib في LabVIEW 8.5 ولكن لم تتم إضافته إلى اللوحات حتى LabVIEW 8.6)

نصائح أخرى

NI لديه جيدة نظرة عامة على LVOOP هذا أمر لا بد منه، حيث يتم تنفيذ OO بطريقة فريدة لـ LabVIEW.

هل جربت "إلى فئة أكثر عمومية' و 'إلى فئة أكثر تحديداوظائف، على لوحة التحكم في التطبيق؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top