INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dynamic Dispatch VI vor Zugriff schützen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

13.06.2012, 14:57 (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2012 14:58 von Kiesch.)
Beitrag #1

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
Dynamic Dispatch VI vor Zugriff schützen
Hallo liebe LVOOP Nutzer,

stehe aktuell etwas auf dem Schlauch glaube ich, ist aber auch schon kurz vor Feierabend ;-)

Problem:

Ich habe eine fromString Methode die ich auf einer Mutterklasse als Schnittstelle zur Verfügung stelle. Die liest aus dem String ne ID mit der Sie eine Instanz von sich selbst oder einer beliebigen durch die ID bezeichneten Kindklasse erzeugt. Anschließend soll eine fromStringIntern aufgerufen wird die mittels Dynamic Dispatching die erzeugte Instanz entsprechend dem String initialisiert.
Diese Interne Methode würde ich ungern frei zur Verfügung stellen wollen, daher würde ich die gerne auf Zugriffe aus der Mutterklasse und Ihren Abkömmlingen beschränken. Privat geht ja nicht wegen Dynamic Dispatching, Protected ist wenn ich das richtig verstehe auch keine Lösung, da ich damit nicht die VIs auf den unteren Ebenen schnützen kann, oder? (hat mir grade irgendwie als ich versucht habe das automatisch setzen zu lassen Labview abgeschossen)

Muss ich das als Gruppe machen? Oder wäre doch Protected richtig gewesen und ich muss das händisch für jedes VI setzen?

Gruß Kiesch

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.06.2012, 14:01
Beitrag #2

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Dynamic Dispatch VI vor Zugriff schützen
Hi Kiesch
Ich habe Deinen Beitrag erst heute wahrgenommen.

Dein Problem kann mit dem Entwurfsmuster Channeling gelöst werden.

Das Du kreierst ein öffentliches static-dispatch-VI, welches das protected dynamic-dispatch-VI aufruft.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.06.2012, 17:32
Beitrag #3

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Dynamic Dispatch VI vor Zugriff schützen
So habe ich es quasi auch gemacht. Eine Öffentliche from(bzw. to)String methode die statisch ist und eine from(bzw. to)StringIntern, die dann dynamisch dispatched. Mir ist nur nicht klar wie ich die "Sicherheitseinstellungen" bei den einzelnen kindklassen und Enkelklassen setzen muss. Die "oberste" (in der Elternklasse) als Protected ist klar. Aber dann? Alle weiteren auch auf Protected? Ich hatte die Erklärung von Protected so verstanden, dass das nicht funktionieren würde und wie gesagt beim ersten versuch das zu setzen kam ne Warnung und dann hats mein Projekt erstmal geschossen. Wollte deswegen vermeiden weiteren Schaden anzurichten bevor ich weis was ich tue. (die Wiederherstellungsfunktion von Labview ist mir irgendwie jedes mal Suspekt und macht teils komische Sachen).

Gruß Kiesch

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.06.2012, 20:29
Beitrag #4

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Dynamic Dispatch VI vor Zugriff schützen

Akzeptierte Lösung

Genauso ist es richtig. Die statische VI der Basisklasse ist öffentlich.

Das dynamic-dispatch-VI der Basisklasse und die overwrite-VIs aller Kindklassen, deren Kinder und Enkel etc. sind protected.

Dann kannst Du in der Basisklasse noch definieren, ob das entsprechende VI der Mutterklasse (Heisst das Call-Parent VI?) zwingend aufgerufen werden muss oder nicht.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.06.2012, 20:56
Beitrag #5

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Dynamic Dispatch VI vor Zugriff schützen
Zitat:Dann kannst Du in der Basisklasse noch definieren, ob das entsprechende VI der Mutterklasse (Heisst das Call-Parent VI?) zwingend aufgerufen werden muss oder nicht.

Wo geht das? Hab die Option zuletzt genauso gesucht wie die "Muss überschrieben werden" Funktion. Hab immer nur die "Muss überschreiben weiterreichen an Kindklassen" gefunden.

Gruß Kiesch

P.S: Danke :-)

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.06.2012, 08:31
Beitrag #6

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Dynamic Dispatch VI vor Zugriff schützen

Akzeptierte Lösung

Class Properties -> Category: Item Settings: Methode auswählen. Rechts erscheinen dann die Optionen.
Unter den Access Scope Optionen sind die für das Channeling Muster wichtigen zu finden.
  • Require descendant classes to override this dynamic dispath VI
  • Require overrides of this dynamic dispatch VI to always invoke the Call Parent Methode node.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Extreme Laufzeitkosten durch Dynamic Dispatching? Kiesch 8 15.897 08.02.2013 13:01
Letzter Beitrag: Kiesch
  State Machine vs. Dynamic Dispatching Kiesch 4 12.080 12.03.2012 13:34
Letzter Beitrag: Kiesch

Gehe zu: