Einzelnen Beitrag anzeigen

slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#3

Re: Klassenbiliothek (DLL) dynamisch Laden ?

  Alt 14. Jun 2007, 16:41
Hallo,

Zitat von Der_Unwissende:
aber Steine habe ich auch keine bei.
Dann bin ich beruhigt.
Du hast mich auf alle Fälle schonmal auf die Fährte gesetzt.

Ich komme jetzt aber partout nicht weiter

Folgende Klassenbibliothek:

Code:
Imports System
Namespace MyAssembly
    Public Class Maths
        Public Function Add(ByVal numberOne As Integer, ByVal numberTwo As Integer)
            Return numberOne + numberTwo
        End Function
    End Class
End Namespace
Ich habe mir jetzt gedacht, ich mache eine Konsolenanwendung, in der ich "einfach" nur die "Add" Funktion aufrufe:

Code:
Imports System
Imports System.Reflection

Module Module1

    Sub Main()
        Dim asm As Assembly = Assembly.LoadFrom("<Pfad>\MyAssembly.dll")

        Console.WriteLine("Types des Klassenbiliothek:")
        Dim typeArray As Type()
        typeArray = asm.GetTypes()

        Dim MonType As Type
        For Each MonType In typeArray
            Console.WriteLine("Type : " + MonType.Name)
        Next

        ' *** Jetzte Speziell für Type "Maths" abrufen
        Dim typeSingle As Type
        typeSingle = asm.GetType("Maths")
        If (typeSingle Is System.DBNull.Value) Then
            Console.WriteLine("typeSingle ist leer ?!")
        End If
        Dim t2 As MemberInfo() = typeSingle.GetMembers()   ' Hier kommt immer der Fehler :-(

    End Sub

End Module
Bis zu Dim t2 As MemberInfo() funktioniert auch alles. Die Fehlermeldung "typeSingle ist leer ?!" kommt NICHT.
In der besagten Zeile bricht der Compiler mit "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt." ab.
Das kann doch nur eine Banalität sein - aber ich komm nicht drauf. Probiert (wie ich "probieren" beim programmieren hasse) habe ich auch schon die typeSingle Zuweisung wie folgt zu ändern:
Code:
typeSingle = asm.GetType("MyAssembly.Maths")
oder
Code:
typeSingle = asm.GetType("MyAssembly")
Gleiche Meldung. Entwicklungsumgebung ist VS2005.
Achso: In der Ausgabe von "Console.WriteLine("Type : " + MonType.Name)" ist "Maths" enthalten.

Zweifel langsam an mir selbst, das kann doch nicht so wild sein ?!

Grüße,
Sebastian
  Mit Zitat antworten Zitat