C# Mit Montage zum Aufruf einer Methode in einer DLL
Ich habe schon viel gelesen über diese - ich fühle mich wie ich bin sehr nahe an der Antwort. Ich bin nur auf der Suche nach Aufruf einer Methode innerhalb einer dll-Datei, die ich erstellt habe.
Zum Beispiel Zwecke:
Meine DLL-Datei:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ExampleDLL
{
class Program
{
static void Main(string[] args)
{
System.Windows.Forms.MessageBox.Show(args[0]);
}
public void myVoid(string foo)
{
System.Windows.Forms.MessageBox.Show(foo);
}
}
}
Meine Anwendung:
string filename = @"C:\Test.dll";
Assembly SampleAssembly;
SampleAssembly = Assembly.LoadFrom(filename);
//Obtain a reference to a method known to exist in assembly.
MethodInfo Method = SampleAssembly.GetTypes()[0].GetMethod("myVoid");
//Obtain a reference to the parameters collection of the MethodInfo instance.
Alle credits gehen an SO user 'woohoo' für das obige snippet
So rufen Sie eine Verwaltete DLL-Datei in C#?
Jetzt, obwohl, ich würde gerne in der Lage, nicht nur auf meine Dll (und die Methoden im it -) aber richtig, die Methoden aufrufen, die im inneren (in diesem Fall würde ich Sie gerne nenne-Methode 'myVoid').
Könnte jemand irgendwelche Vorschläge für mich?
Danke,
Evan
Warum gehst du nicht fügen Sie den Verweis auf Ihre Anwendung ?
Da die OP vielleicht möchten Sie nur die DLL, wenn der Benutzer die Rechte auf die Funktion. Eine Referenz Hinzugefügt hat zu versenden stets mit der app.
Da die OP vielleicht möchten Sie nur die DLL, wenn der Benutzer die Rechte auf die Funktion. Eine Referenz Hinzugefügt hat zu versenden stets mit der app.
InformationsquelleAutor | 2011-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Frage und die Antwort auf den Sie verweisen, ist mit der Reflexion auf die Methode aufrufen, die in der verwalteten DLL. Dies ist nicht erforderlich, wenn, wie Sie sagen, Sie tun wollen, verweisen Sie einfach auf die DLL. Fügen Sie den Verweis (über die option Verweis Hinzufügen in Visual Studio), und rufen Sie Ihre Methode auf, die direkt so auf:
Wenn Sie gehen wollen, dass die Reflexion route (so wie Sie von
woohoo
), müssen Sie noch eine Instanz IhrerProgram
Klasse.Nun haben Sie eine Instanz von
Program
und rufenmyVoid
.Lesen Sie die Dokumentation für MethodInfo.Invoke.
danke für die Erinnerung, Dokumentation zu Lesen 🙂 aber ich Frage mich, wie zu nennen,
Das nennen würde
myVoid
als statische Methode mit dem Parameterparameters
. Wahrscheinlich gibt ein leeres array für die Parameter ist in Ordnung, aber ich mag zu bleiben, das schreiben der Dokumentation.Ferreira Als so etwas wie ein follow-up zu meinem ursprünglichen Frage, (Sie hat mich wirklich zum nachdenken hier), wäre es möglich zu verschlüsseln dll-Datei vor, bevor Sie Sie als Referenz zu meinem Projekt; dann laden Sie die dll-Daten als ein Objekt, das entschlüsseln dieser Daten, und noch in der Lage sein, um die Methoden aufrufen, die in Ihr?
InformationsquelleAutor Matthew Ferreira
InformationsquelleAutor Damith
Fügen Sie einfach diese Zeile im code nach, die Sie erhalten, verweisen Sie auf Ihre Methode.
Hoffe, dass dies helfen.
null
wenn eine Methode keine Parameter hat. EDIT: noch berücksichtigen vorbeinull
als das ist, was in der Dokumentation dargelegt.Ich weiß, Vielleicht hatte ich es etwas genauer erläutern.
InformationsquelleAutor saber
MethodInfo hat eine Methode namens Aufrufen.
So rufen Sie einfach
Method.Invoke()
mit einem Objekt, das Sie erstellt haben, indem Sie zum Beispiel den AufrufSystem.Activator.CreateInstance()
InformationsquelleAutor Sylence