Я пытаюсь создать класс с именем SurroundJob, который принимает Func
, но выполнение входящего метода не является его целью, задача SurroundJob - делать определенные предопределенные вещи до и после вызова входящего метода
однако у меня возникли проблемы с получением возвращаемого значения входящего метода, чтобы я мог передать его вызывающему классу: (
сначала добавляется вызывающий класс, затем требуемый, но в настоящее время не- функциональный класс 'surrounder' и, наконец, исключение из-за метода неуместной попытки приведения (TResult). DynamicInvoke (param)
Класс вызова
class ACoreJob
{
public void DoMyJob()
{
SurroundJob.CoreJobs<Boolean, string> coreJob = DoCoreJob;
Boolean success = false;
SurroundJob.Embed<Boolean, string>(ref success, "facebook.com", coreJob);
if (success) Trace.WriteLine("Wicked without exceptions");
}
Boolean DoCoreJob(string Target)
{
Boolean isHappy = false;
Process.Start(@"http://" + Target);
isHappy = true;
return isHappy;
}
}
Класс в фокусе
class SurroundJob
{
public delegate TResult CoreJobs<TResult, T>(T param);
public static void Embed<TResult,T>(ref TResult result,T param, Delegate method)
{
if (method != null)
{
MethodInfo methodInfo = method.Method;
result = default(TResult);
try
{
Log(methodInfo.Name + " Start");
result = (TResult)method.DynamicInvoke(param);
}
catch (Exception e)
{
Troubleshoot(methodInfo.Name, e);
}
}
}
Исключение
В строке: result = (TResult) method.DynamicInvoke (param);
DoCoreJob Проблема: Невозможно привести объект типа 'ACoreJob' к типу'Boolean'.
Я новичок в этом мире и действительно не знаю, как взаимодействовать с DynamicInvoke, чтобы получить возвращаемое значение?
илиЕсть еще один способ достичь моей цели?
искренне спасибо!