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 

.NET Generics via LabView



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!

04.07.2013, 08:11 (Dieser Beitrag wurde zuletzt bearbeitet: 04.07.2013 08:15 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: .NET Generics via LabView
(04.07.2013 07:30 )mikano schrieb:  Hallo miteinander!

Ich versuche gerade eine generische Klasse in meiner DLL aufzurufen. Die Schwierigkeit eine statische Klasse aufzurufen habe ich bereits überwunden, dies sollte schon funktionieren, das Problem ist jetzt aber das der Konstruktor drei unterschiedliche Werte annehmen muss (d.h. 2 Enum und 1 Integer Parameter), d.h. es gibt kein leeren Konstruktor (im Sinne von keine Attribute)

Hat jemand eine Idee, wie ich ein "Cluster-Array" in ein 1d .NET Array umwandeln kann?
Übergeben wird das Array an die .NET Klasse Activator via CreateInstance mit dem type und die args als object[].


Danke und Beste Grüsse,
mikano

Wenn Du mit Generische Klasse eine Klasse meinst die Generic ist dann kannst Du die LabVIEW .Net Nodes nicht verwenden. LabVIEW bietet keine Möglichkeit, die Create Instance Node weiter zu konfigurieren. Entweder bietet die Klassebeschreibung alle Informationen die LabVIEW benötigt, um Sie zu instantieren oder es geht gar nicht. Bei Generics ist das aber nicht gegeben. Dort wird der interne Datentyp der Klasse erst zur Linkzeit bestimmt durch den Programmierer. Um Generics möglich zu machen müsste LabVIEW in der Create Instance Node eine weitere Konfiguration möglich machen, wo Du den Datentyp konfigurieren kannst. Das auf eine sinnvolle Weise zu implementieren ohne den Benützer mit auführlichen .Net Details zu erschlagen, die er alle korrekt angeben müsste, ist fast unmöglich und wurde deshalb nicht gemacht.

Es gibt zwei Lösungen hierzu:

1) Man schreibe einen Wrapper in .Net der explicite Datentypen verwendet und die generieke Klasse dann aufruft. Das kann LabVIEW instantieren, solange man Sorge trägt, dass keine Methode wiederum generieke Objekte als Parameter verlangt. Intern dürfen die Wrapper aber nach Belieben mit generiken Datetetypen arbeiten.

2) Mittels Reflection kann man die Limitation in LabVIEW umgehen. Das funktioniert zwar, ist aber wirklich kein zuckerschlecken, weil sehr kompliziert, kostet ziemlich viel Performance da man alles durch mehrer Lagen von .Net Reflektion schicken muss und hat eine deutlich höhere Chance bei einem Upgrade zu einer neuen .Net Version wegen irgendwas zu hakeln.
Die Implementation mittels Reflection gibt ein wenig wieder was man alles wissen müsste um eine Konfiguration von Generics in LabVIEWs Create Instance möglich zu machen.


Wenn Du etwas anderes meinst, dann erkläre Dich bitte etwas genauer.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
.NET Generics via LabView - mikano - 04.07.2013, 07:30
RE: .NET Generics via LabView - rolfk - 04.07.2013 08:11
RE: .NET Generics via LabView - mikano - 04.07.2013, 08:24
RE: .NET Generics via LabView - rolfk - 04.07.2013, 09:32
RE: .NET Generics via LabView - mikano - 04.07.2013, 10:21
RE: .NET Generics via LabView - rolfk - 04.07.2013, 12:25

Gehe zu: