6
基本的には、DLLを名前で呼び出し、オブジェクトをインスタンス化してから、そのDLLで名前でメソッドを呼び出しようとしています。私は "例外は呼び出しのターゲットによってスローされました。" Method.Invoke中に。私はかなり私の問題は、メソッドの引数の型キャストと確信しています。私は誰もがこの例外について何か入力を持っているのだろうかと思っていた。さらに、私のアプローチを修正する方法に関する提案は歓迎されます。引数でDLLとメソッドを動的に呼び出す
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); }
代わりに私は "オブジェクトo = Activator.CreateInstance(型);を削除して静的なdllメソッドを呼び出そうとしました; "method.Invoke(null、methodParameters);"に変更します。同じ例外がスローされます。 – crlanglois