У меня есть имя класса "BusinessError". Я пытаюсь вызвать этот класс из консольного приложения (используя отражение). Возникла ошибка .. (Я очищаю Visual Studio много раз или перезапускаю)
Message = "Объект типа 'RestService.RequestGetOrderDetail' не может быть преобразован в тип 'RestService.RequestGetOrderDetail'." Но когда я пытаюсьвызвать класс BusinessHasNoError, ошибки нет ..
Как можно MethodInfo вызывать с параметром класса сущности (без строки, int с параметрами) ..
public class BusinessError
{
public ResponseGetOrderDetail Test1(RequestGetOrderDetail requestGetOrderDetail)
{
ResponseGetOrderDetail responseGetOrderDetail = new ResponseGetOrderDetail(
requestGetOrderDetail);
return responseGetOrderDetail;
}
}
vs
public class BusinessNoError
{
public ResponseGetOrderDetail Test1(string id)
{
ResponseGetOrderDetail responseGetOrderDetail = new ResponseGetOrderDetail(id);
return responseGetOrderDetail;
}
}
с
public string Execute(DllInfo dllInfo)
{
object[] parameterObject = new object[1];
parameterObject[0] = "O19082900055";
string dllsPath = @"C:\Scheduler\DLLs\" + dllInfo.Dll;
string nameSpace = dllInfo.NameSpace;
string className = dllInfo.Class;
string methodName = dllInfo.Method;
object result = string.Empty;
RequestGetOrderDetail requestGetOrderDetail = new RequestGetOrderDetail();
requestGetOrderDetail.OrderID = "O19082900055";
parameterObject[0] = new RequestGetOrderDetail() { OrderID = "O19082900055" };
try
{
Assembly assembly = Assembly.LoadFrom(dllsPath);
Type typeInstance = assembly.GetType(nameSpace + "." + className);
if (typeInstance != null)
{
MethodInfo methodInfo = typeInstance.GetMethod(methodName);
ParameterInfo[] parameterInfo = methodInfo.GetParameters();
object classInstance = Activator.CreateInstance(typeInstance, null);
if (parameterInfo.Length == 0)
{
result = methodInfo.Invoke(classInstance, null);
}
else
{
//I want to send requestGetOrderDetail object to methodInfo.Invoke !!!!!
//result = methodInfo.Invoke(classInstance, requestGetOrderDetail);
**result = methodInfo.Invoke(classInstance, parameterObject);**
}
}
}
catch (Exception ex)
{
throw;
}
return result.ToString();
}
Пример файла