Grundsätzlich versuche ich, eine DLL mit Namen aufzurufen, instanziieren ein Objekt, dann rufen Sie eine Methode nach Name in dieser DLL. Ich erhalte eine "Ausnahme wurde vom Ziel eines Aufrufs ausgelöst." während der Methode.Invozieren. Ich bin ziemlich sicher, dass mein Problem mit der Typumwandlung der Argumente der Methode ist. Ich habe mich gefragt, ob irgendjemand etwas zu dieser Ausnahme gehört hat. Darüber hinaus sind alle Vorschläge zur Überarbeitung meines Ansatzes willkommen.Dynamisch Aufruf einer DLL und Methode mit Argumenten
public void calldll(string dllName, string typeName, string methodName, string arguments) {
string[] argumentArray = arguments.Split(new char[] { '|' }, StringSplitOptions.None);
Assembly assembly = Assembly.LoadFrom(dllName);
System.Type type = assembly.GetType(typeName);
Object o = Activator.CreateInstance(type);
MethodInfo method = type.GetMethod(methodName);
ParameterInfo[] parameters = method.GetParameters();
object[] methodParameters = new object[parameters.GetLength(0)];
for (int i = 0; i < parameters.Length - 1; i++)
{
var converter = TypeDescriptor.GetConverter(parameters[i].GetType());
methodParameters[i] = converter.ConvertFrom(argumentArray[i]);
}
method.Invoke(o, methodParameters); }
Alternativ habe ich versucht, statische DLL-Methoden durch Entfernen der "Object o = Activator.CreateInstance (Typ);" und zu "method.Invoke (null, methodParameters) wechseln"; mit der gleichen Ausnahme wird geworfen. – crlanglois