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

  • SEARCH
  • Home
  • 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 147525
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T08:47:48+00:00 2026-05-11T08:47:48+00:00

Hope I can explain this somewhat decently, as it’s blowing a fuse in my

  • 0

Hope I can explain this somewhat decently, as it’s blowing a fuse in my brain today. I’m learning TDD in C#, so I’m still trying to rewire my brain to fit it.

Let’s say I have a User class, that previously had a static method to retrieve a User object (simplified below).

public static User GetUser(string username) {    User user = GetUserFromCache(username);    if(user == null)    {        user = GetUserFromDatabase(username);        StoreObjectInCache(user);    }    return user; } 

So I’m trying to rewrite this to use dependency injection so I can fake out the ‘GetUserFromDatabase’ method if it needs to go there. That means I have to make the function not static. Whereas the data access layer would construct the user object from the database, mapping the returned columns to the object properties, a retrieval from cache would return a true-blue User object. However, in a non-static method, I can’t just say

this = GetUserFromCache(username); 

Because it just doesn’t work that way. Though I’m by no means the world expert in how to dance around this with OO, it looks like I’d almost have to grab the User object from cache and write another mapping function that would store the returned User object properties into the new User instance.

What’s the solution here? Any OO magic I’m missing? Is the only solution to refactor everything to use factories instead of having the instantiation logic in the object itself? Or have I been staring at this too long and missing something completely obvious?

  • 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. 2026-05-11T08:47:49+00:00Added an answer on May 11, 2026 at 8:47 am

    I don’t think you’re missing any magic and I think refactoring to remove the persistence code from your business objects and into your persistence layer is the right way to go both from a unit testing and a design perspective. You may want to think about having the cache sit between your business layer and the persistence layer, mediating the retrieval/update of your business objects to simplify things. You should be able to mock/fake your cache and persistence layer if you separate things out this way.

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

Sidebar

Related Questions

I hope I can explain this problem decently well! I'm trying to implement a
I hope this I can explain what I am trying to achieve: I want
Okay, in my head this is somewhat complicated and I hope I can explain
I hope I can explain this problem right, it's a bit confusing for me.
I hope I can explain this well enough so that you can understand the
I hope I can explain this properly. I'm using flashDevelop for an avatar creation
I hope I can explain this right I have two input fields that require
Hope I can explain this correctly.. Silverlight Application Telerik Reports (in a separate Class)
I hope I can explain this correctly. I am using the Javolution library to
I'm not very good in SQL stuff, so I hope someone can explain this

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.