Search code examples
c#class-design

How do I make my static class not so static?


I have a static class that contains my database logic.

This class is used in a website, web services and as part of a middleware component.

For every method in this class I need a piece of context information from the caller. In the case of the web site this would be user information, for the web service and middleware component, this would identify the calling service.

I can't store this value in the config because this might differ per user and I don't always have a httpcontext to get this from.

I could easily add a new parameter onto every method in this class or I could change it from a static class so that it has a single non-static property but neither of those solutions seem very elegant.

So are there any other options I haven't considered?


Solution

  • If all the methods need some state, it sounds a lot like you should create an instance and pass that state via the constructor.

    Changing the design from a bunch of static methods to an instance will also make it easier to test the class.