Feedback

C# - Ruft eine Methode in einer externen DLL anhand der Namen auf

Veröffentlicht von am 04.07.2007
(4 Bewertungen)
Die Methode nutzt Reflection um über die Namen von DLL, Klasse und Methode eine Methode aufzurufen und ihr eine ArrayListe an Parametern zu übergeben.

Parameter:
nameOfDLL -> Der Komplette Pfad und Namen der DLL (muss IL-Code (C++, C# , VB.NET) sein)
nameOfClass -> Der Komplette Name der Klasse incl. Namespace
nameOfMethod -> Der Name der Methode .-)
parameter -> Eine beliebige ArrayListe um eine unbestimmte Menge an Parametern zu übergeben.
GFU-Schulungen  [Anzeige]

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

//Einbinden von:
using System.Reflection;
using System.Collections;

/// <summary>
/// Ruft eine Methode einer Klasse einer externen DLL auf und gibt falls ein
/// Fehler auftritt eine Fehlermeldung zurück..
/// </summary>
private String exsterneDLL(String nameOfDLL, String nameOfClass, String nameOfMethod, ArrayList parameter)
{
    String errorMessage = "";
    try
    {
        //erstmal die DLL laden
        Assembly assembly = Assembly.LoadFile(nameOfDLL);
        //Object mit dem übergebenen KlassenNamen erschaffen
        Object o = assembly.CreateInstance(nameOfClass);
        if (o != null)
        {
            //Parameter-Beschreibung
            Type[] typeArray = new Type[1];
                                typeArray.SetValue(typeof(ArrayList), 0); //Ein Paramter des Types von object am Index 0
            //Methode holen
            MethodInfo mi = o.GetType().GetMethod(nameOfMethod, typeArray);     //Holen der Methodeninfo für die gewümschte Methode
            if (mi != null)
            {
                //und ab damit ...
                errorMessage = (String)mi.Invoke(o, new Object[] { (ArrayList)parameter }); //Methode mit Parameter wird ausgeführt
            }
            else
            {
                errorMessage = "Methode <" + nameOfMethod + "> nicht in Klasse vorhanden."; //Fehler .. 
            }
        }
        else
        {
            errorMessage = "Klasse <" + nameOfClass + "> nicht in Plugin vorhanden."; //Fehler .. 
        }
    } 
    catch (System.IO.FileNotFoundException)
    {
        errorMessage = "Externes Plugin <" + nameOfDLL + "> konnte nicht geladen werden!";
    }
    return errorMessage;
}

Abgelegt unter Reflection, DLL, Aufruf, Name.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!