基本上我试图通过名称调用dll,实例化一个对象,然后在该dll中按名称调用方法.我得到了一个"调用目标引发了异常." 在Method.Invoke期间.我很确定我的问题是对方法的参数进行类型转换.我想知道是否有人对此异常有任何意见.此外,欢迎任何有关如何修改我的方法的建议.
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); }
Run Code Online (Sandbox Code Playgroud)