I try to implement a decorator pattern for handling error in database transactions. I have no problem with standard Func and Actions, but i have difficulties with functions having out parameter.
Here many topics with same question, and i figured out to implement my own delegate:
    public delegate TResult FuncWithOut<T1, T2, TResult>(T1 arg1, out T2 arg2);         
1) But i don't found how to implement method based on this delegate:
    private void SafetyExecuteMethod(Action action)
    {
        try
        {
            action();
        }
        catch (Exception ex)
        {
            // Some handling
        }
    }
    private T SafetyExecuteFunction<T>(Func<T> func)
    {
        T result = default(T);
        SafetyExecuteMethod(() => result = func.Invoke());
        return result;
    }
    private SafetyExecuteFunctionWithOut // ??
    {
        // ??
    }
2) And how to call this method:
    public bool UserExists(string name)
    {
        return SafetyExecuteFunction(() => _innerSession.UserExists(name));
    }
    public void CreateUser(string name, string password)
    {
        SafetyExecuteMethod(() => _innerSession.CreateUser(name, password));
    }
    public bool CanUpdateUser(string userName, out string errorMessage)
    {
        // ??
        // _innerSession.CanUpdateUser(userName, out errorMessage);
    }