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()); – rhughes
그 이름으로 언급 한 것은 FooReturningVoid가 다음과 같이 선언 된 함수라는 것입니다 :'void FooReturningVoid()' – SOReader
생각했습니다. 왜 다른 방법으로 그것을 전달하겠습니까?그것은 void를 반환합니다. 그래서 lazyberezovsky가 아래에서 언급했듯이 할 수 없습니다. – rhughes