Какой аргумент должен SafeRun
должен правильно обрабатывать следующие сценарии вызова?Процедура с аргументом выражения
SafeRun(new SomeClass(arg1, arg2));
SafeRun(new SomeOtherClass());
SafeRun(someObject.FooReturningVoid());
Я попытался следующие, но безуспешно :(
protected void SafeAct<TResult>(Expression<Func<TResult>> expression)
protected void SafeAct(Expression<Action> expression)
SafeRun
фактически делает это:
protected void SafeAct<TResult>(Expression<Func<TResult>> expression)
{
try
{
Expression.Lambda<Func<TResult>>(expression).Compile()();
}
catch (Exception e)
{
ThrownException = e;
}
}
Я не принимаю альтернативу вызова SafeAct с лямбда выражение:
I DON'T WANT THIS:
SafeRun(() => new SomeClass());
'SafeRun (someObject.FooReturningVoid());' - return void ?? – rhughes
То, что я называю с этим именем, это то, что FooReturningVoid - это функция, объявленная так: 'void FooReturningVoid()' – SOReader
Я думал это. Почему вы передадите это другому методу?Он возвращает пустоту, так как лазиберовский упоминает ниже, что нельзя сделать. – rhughes