Fondamentalmente sto provando a chiamare una dll per nome, creare un'istanza di un oggetto, quindi chiamare un metodo per nome in quella dll. Ricevo "Un'eccezione è stata lanciata dall'obiettivo di un'invocazione". durante il Method.Invoke. Sono abbastanza sicuro che il mio problema è con il typecasting degli argomenti del metodo. Mi stavo chiedendo se qualcuno avesse qualche input su questa eccezione. Inoltre, qualsiasi suggerimento su come modificare il mio approccio è benvenuto.Chiamare dinamicamente una dll e un metodo con argomenti
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); }
In alternativa ho provato a chiamare i metodi di dll statici rimuovendo "Object o = Activator.CreateInstance (type);" e passando a "method.Invoke (null, methodParameters);" con la stessa eccezione che viene lanciata. – crlanglois