| 

.NET C# Java Javascript Exception

6
Hallo zusammen,

es gibt Tage, da glaubt man, zu verblöden, heute gehört definitiv dazu :-)
Mein Problem: ich möchte zur Laufzeit dynamisch eine Klasse instanziieren und dort ebenfalls dynamisch eine Methode aufrufen. Dazu habe ich bisher folgendes:

Dim typ As Type
typ = Type.GetType(klassenname, True, True)
Dim ins As Object
ins = Activator.CreateInstance(typ)

In Klassenname steht der Name der Assembly mit Klassenname drin, also sowas: "assembly.klasse". Er wirft mir daraufhin bei "typ =..." eine System.Reflection.TargetInvocationException aus. Die Klasse gibt es natürlich.

Das Ganze hat schon einmal funktioniert, seitdem ich in den Projekteigenschaften auf .NET 4.5.2 umgestellt habe (vorher 4.0), funktioniert es nicht mehr. Ein Zurück auf 4.0 geht nicht weil ich asyncrone Methoden aus 4.5 benutze.

Hat jemand eine Lösung?

Edit:
Dim x As New klasse
funktioniert.
News:
21.01.2016
muffi 1,4k 1 9
muffi 1,4k 1 9
1 Antwort
0
Wir verwenden dazu folgenden Aufruf (gekapselt in einer eigenen Klasse, sodass ich auch Klassen aus anderen Assemblies aufrufen kann):
Activator.CreateInstance(sAssemblyName, sTypeName).Unwrap

Das UnWrap sorgt dafür, dass ich Klasse nicht verpackt bekommen und diese sofort verwenden kann. Zumindest gab es bislang kein Problem mit der .NET-Version.
Verwendung:
Dim oClass As Klasse
oClass = CType(Activator.CreateInstance(sAssemblyName, sTypeName).UnWrap, Klasse)

Nun kann die Klasse verwendet werden.
Vielleicht hilft dieser Hinweis weiter.
22.01.2016
edvservice 1,4k 1 6
Inzwischen habe ich meinen Fehler gefunden... ich habe es geschafft und tatsächlich den falschen Namespace in der Assembly benutzt. Das mit dem unwrap habe ich mal versucht, aber wieder rausgenommen, weil es bei mir einen Fehler wirft, ohne unwrap läuft es aber jetzt. Trotzdem danke!
muffi 22.01.2016

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH