Về cơ bản tôi đang cố gắng gọi một dll theo tên, khởi tạo một đối tượng, sau đó gọi một phương thức theo tên trong dll đó. Tôi nhận được một "ngoại lệ đã được ném bởi mục tiêu của một lời kêu gọi." trong Method.Invoke. Tôi khá chắc chắn vấn đề của tôi là với typecasting của các đối số của phương pháp. Tôi đã tự hỏi nếu có ai có bất kỳ đầu vào về ngoại lệ này. Ngoài ra, mọi đề xuất về cách sửa đổi cách tiếp cận của tôi đều được hoan nghênh.Tự động gọi một dll và phương thức với các đối số
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); }
Cách khác là tôi đã thử gọi các phương thức dll tĩnh bằng cách xóa "Object o = Activator.CreateInstance (type);" và thay đổi thành "method.Invoke (null, methodParameters);" với cùng một ngoại lệ bị ném. – crlanglois