Mehrdeutige übereinstimmung gefunden beim Zugriff auf die dll
Ich versuche, laden Sie eine Funktion in einer dll. Die dll wird geladen, aber nur an der Stelle der Berufung auf die Funktion, bin ich immer eine Ausnahme
Mehrdeutige Treffer gefunden
Hier ist das code-snippet.
Assembly dll = Assembly.LoadFrom(DLLPATH);
if (dll != null)
{
Type Tp = dll.GetType("ABCD.FooClass");
if (Tp != null)
{
Object obj = Activator.CreateInstance(Tp);
if (obj != null)
{
List = (List<String>)obj.GetType().GetMethod("Foo").Invoke(obj, null);
}
else
{
Console.WriteLine("obj is null");
}
}
Console.WriteLine("Type is null");
}
else
Console.WriteLine("Dll is not loaded");
Console.ReadKey();
Die Methode, die ich Vorschlage, (ich.e Foo
), akzeptiert keine Parameter und es ist eine überladene Methode. Ist, dass der Ort, wohin ich gehe falsch gemacht oder ist es ein anderer Ort?
Gibt es eine andere Möglichkeit zum aufrufen solcher Methoden, die akzeptiert keine Parameter? Ich habe versucht, die Lösung gepostet hier aber es funktioniert nicht.
Beispiel-code ohne alle LoadLibrary/CreateInstance würde wahrscheinlich zeigen problem mehr klar bitte versuchen Sie, machen Sie einfach die Probe mit einer vereinfachten "FooClass" und Aufruf von Invoke. (vorausgesetzt, Sie bekommen Ausnahme gibt es).
Hast du das laden der assembly mehrere Male?
Ich bin laden der assembly für eine Zeit nur.
Hast du das laden der assembly mehrere Male?
Ich bin laden der assembly für eine Zeit nur.
InformationsquelleAutor Pankaj Kolhe | 2013-03-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Methode
Type.GetMethod(string methodName)
wirft die Ausnahme, die Sie erwähnt, wenn es mehr als eine Methode mit dem angegebenen Namen ( siehe in diesem MSDN-Thema ). AlsFoo
ist eine überlastung, wie Sie sagen, ich vermute, dass es mehrereFoo
Methoden in der gleichen DLL. Wenn Sie beispielsweise die Methoden :Die Methode
GetMethod(string methodName)
können nicht bestimmen, welche Sie haben wollen. In diesem Fall verwenden Sie die MethodeGetMethods
und bestimmen Sie die richtige Methode auf Ihrem eigenen.InformationsquelleAutor Tobias
Wenn es eine überlast, und Sie möchten, um die Methode aufrufen ohne Parameter das ist die richtige Lösung:
InformationsquelleAutor lupok
Danke Jungs für Eure Hilfe.!!
Als ich Ihnen sagte, die Methode (ich.e FOO), die ich rief, überlastet ist. Ich habe nicht verwendet GetMethod() richtig, nehme ich an. Nun, ich habe eine Lösung gefunden mit GetMethods () - Funktion.
Änderte ich meinen code in der folgenden Art und Weise und es funktionierte.!!
InformationsquelleAutor Pankaj Kolhe
Dank.
Meinen "Mehrdeutig match gefunden" wurde, hatte ich einem Textfeld in der ASCX - (frontend) mit der Bezeichnung "Bio", ein Daten-element mit dem Namen " Bio in einem listview <%# DataBinder.Eval(Container.DataItem, "Bio -")%> und ich den Namen einer string-Variablen in Bio .CS.
Kein Compiler-Fehler oder "redlines", aber erzeugt einen Fehler zur Laufzeit. Umbenannt habe ich die Variablen anders und der Fehler ging Weg. Der prgrammer wer schrieb den code nicht zu Folgen, Namenskonventionen wie BioTxt. Dies beseitigt den Fehler.
InformationsquelleAutor WebPro