Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 847781
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T06:50:30+00:00 2026-05-15T06:50:30+00:00

I might be losing the plot, but I hope someone can point me in

  • 0

I might be losing the plot, but I hope someone can point me in the right direction.

What am I trying to do?

I’m trying to write some base methods which take Func<> and Action so that these methods handle all of the exception handling etc. so its not repeated all over the place but allow the derived classes to specify what actions it wants to execute.

So far this is the base class.

public abstract class ServiceBase<T>
{
    protected T Settings { get; set; }

    protected ServiceBase(T setting)
    {
        Settings = setting;
    }

    public void ExecAction(Action action)
    {
        try
        {
            action();
        }
        catch (Exception exception)
        {
            throw new Exception(exception.Message);
        }
    }

    public TResult ExecFunc<T1, T2, T3, TResult>(Func<T1, T2, T3, TResult> function)
    {
        try
        {
            /* what goes here?! */
        }
        catch (Exception exception)
        {
            throw new Exception(exception.Message);
        }
    }
}

I want to execute an Action in the following way in the derived class (this seems to work):

public void Delete(string application, string key)
{
  ExecAction(() => Settings.Delete(application, key));
}

And I want to execute a Func in a similar way in the derived class but for the life of me I can’t seem to workout what to put in the base class.

I want to be able to call it in the following way (if possible):

public object Get(string application, string key, int? expiration)
{
  return ExecFunc(() => Settings.Get(application, key, expiration));
}

Am I thinking too crazy or is this possible? Thanks in advance for all the help.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-15T06:50:31+00:00Added an answer on May 15, 2026 at 6:50 am
    public void Delete(string application, string key)
    {
        ExecAction(() => Settings.Delete(application, key));
    }
    
    public object Get(string application, string key, int? expiration)
    {
        return ExecFunc(() => Settings.Get(application, key, expiration));
    }
    
    // ...
    
    public TResult ExecFunc<TResult>(Func<TResult> func)
    {
        try
        {
            return func();
        }
        catch (Exception exception)
        {
            throw new Exception(exception.Message);
        }
    }
    

    By the way, your exception handling looks a bit dodgy: Firstly, it’s not considered good practice to catch Exception itself. Consider catching more specific exceptions instead. Secondly, you’re throwing a new exception in your catch block, which means that you’re losing the stacktrace etc from the original exception. You should use throw; instead to rethrow the original exception. (This assumes that your catch block is doing some sort of useful work. If all you’re doing is catching and throwing then just ditch the try...catch blocks altogether.)

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I might be missing something really obvious. I'm trying to write a custom Panel
This might seem obvious but I've had this error when trying to use LINQ
This might sound like a little bit of a crazy question, but how can
It might be a lack of coffee, but I've just had some, so I'll
Might be subjective and/or discussion.. but here goes. I've been asked to estimate a
This might seem like a stupid question I admit. But I'm in a small
This might be on the discussy side, but I would really like to hear
This might be a bit on the silly side of things but I need
This might be an interesting question. I need to test that if I can
This might be an odd question, but when I scale my image in C#

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.