using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DictionariesAndTuples
{
    public class UserCache
    {
        private Dictionary<string, UserInfo> _cachedUserInfo =
            new Dictionary<string, UserInfo>();


        public UserInfo GetInfo(string userHandle)
        {
            RemoveStaleCacheEntries();
            UserInfo info;
            if (!_cachedUserInfo.TryGetValue(userHandle, out info))
            {
                info = FetchUserInfo(userHandle);
                _cachedUserInfo.Add(userHandle, info);
            }
            return info;
        }

        private UserInfo FetchUserInfo(string userHandle)
        {
            return new UserInfo(); // W prawdziwej aplikacji tu zostałby odszukany użytkownik.
        }
        private void RemoveStaleCacheEntries()
        {
            // W prawdziwej aplikacji tu zostałaby umieszczona logika usuwania niepotrzebnych danych.
        }
    }

    public class UserInfo
    {
    }
}
