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.
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.
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!