Я хочу загрузить сборку (ее имя хранится в строке), использовать отражение, чтобы проверить, имеет ли он метод под названием "CustomType MyMethod (byte [] a, int b)" и вызывает его или генерирует исключение в противном случае, Думаю, я должен сделать что-то подобное, но был бы признателен, если бы кто-то мог предложить тот же совет о том, как это лучше всего сделать:
Assembly asm = Assembly.Load("myAssembly"); /* 1. does it matter if write myAssembly or myAssembly.dll? */
Type t = asm.GetType("myAssembly.ClassName");
// specify parameters
byte[] a = GetParamA();
int b = GetParamB();
object[] params = new object[2];
params[0] = a;
params[1] = b;
/* 2. invoke method MyMethod() which returns object "CustomType" - how do I check if it exists? */
/* 3. what the meaning of 4th parameter (t in this case); MSDN says this is "the Object on which to invoke the specified member", but isn't this already accounted for by using t.InvokeMember()? */
CustomType result = t.InvokeMember("MyMethod", BindingFlags.InvokeMethod, null, t, params);
Является ли это достаточно хорошим или лучше/быстрее/короче? Что относительно конструкторов, учитывая, что эти методы не являются статическими - их можно просто игнорировать?
При вызове void Methods() можно ли просто написать t.InvokeMember(...) или всегда делать Object obj = t.InvokeMember(...)?
Спасибо заранее.
ИЗМЕНИТЬ Я привел рабочий пример в качестве отдельного ответа ниже.