vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Beispiel: dynamische Nutzung einer Assembly zur Laufzeit (System.Reflection) 
Autor: Manfred X
Datum: 05.05.17 22:25

Prüfe zunächst, ob die Exe als Plugin (über eine gemeinsame Schnittstelle)
nutzbar ist.

Kleines Beispiel für die Nutzung einer Assembly zur Laufzeit per Reflection:

Es gibt eine "Exe", in der eine Klasse angesiedelt ist, die "FileCompare" heißt.
In dieser Klasse existiert eine Instanz-Methode "Compare", der als
erster Parameter ein Dateiname und als 2./3. Parameter ein Verzeichnis zu geben ist.
Die Methode prüft, ob diese Datei in beiden Verzeichnissen vorhanden und
identisch ist (diverse Vergleichs-Parameter).
Das Ergebnis wird als Enumeration "FileCompareResult" zurückgegeben.
'1. Den Pfad zur gewünschten Assembly festlegen. 
Dim path as String = "......"
 
'2. Die gewünschte Assembly zur Laufzeit laden:
Dim myasm As System.Reflection.Assembly = _
   System.Reflection.Assembly.LoadFile(path)
 
'optional: Auflistung aller Typen in der geladenen Assembly
Dim types() As System.Type = myasm.GetTypes
 
'3. Eine Instanz der gewünschten Klasse erstellen 
Dim myfc As Object = myasm.CreateInstance("Assemblyname.FileCompare", True)
'eine Instanz der Rückgabe-Enumeration erstellen
Dim myfcr As Object = myasm.CreateInstance("Assemblyname.FileCompareResult", _
  True)
 
'optional: Die Methoden der Klasse "FileCompare" auflisten
Dim methods() As Object = myfc.GetType.GetMethods()
 
'4. Eine Methoden-Info für den Zugriff auf die Instanz-Methode "Compare"
Dim myMethod As System.Reflection.MethodInfo = myfc.GetType.GetMethod("Compare")
 
'5. Die Liste der Parameter für einen Aufruf von "Compare" als Array 
Dim parameters() As Object = {"Dokument_Link.rtf", "C:\daten1", "C:\daten2"}
 
'6. Die Methode mit den Parametern ausführen
'Dabei muß zunächst die Instanz der Klasse gegeben werden, in der sich die
'Methode befindet, danach die Parameter
myfcr = myMethod.Invoke(myfc, parameters)
Wenn die Klasse sich in einem Namespace befindet, ist dieser zusätzlich anzugeben.

Beitrag wurde zuletzt am 05.05.17 um 22:35:14 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Verschiedene Versionen eines Verweises für unterschiedliche ...1.587Soenke149202.05.17 19:16
Re: Verschiedene Versionen eines Verweises für unterschiedli...980Manfred X02.05.17 19:35
Re: Verschiedene Versionen eines Verweises für unterschiedli...800Soenke149205.05.17 18:30
Beispiel: dynamische Nutzung einer Assembly zur Laufzeit (Sy...746Manfred X05.05.17 22:25
Re: Verschiedene Versionen eines Verweises für unterschiedli...697Manfred X05.05.17 22:46
Re: Verschiedene Versionen eines Verweises für unterschiedli...807Soenke149205.05.17 23:22
Re: Verschiedene Versionen eines Verweises für unterschiedli...705Soenke149205.05.17 23:35
Re: Verschiedene Versionen eines Verweises für unterschiedli...715Manfred X05.05.17 23:53
Re: Verschiedene Versionen eines Verweises für unterschiedli...706Manfred X05.05.17 23:39
Re: Verschiedene Versionen eines Verweises für unterschiedli...831sv0001004.05.17 19:05
Re: Verschiedene Versionen eines Verweises für unterschiedli...857Manfred X04.05.17 20:53

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel