Хорошо, вот что я придумала, но я не уверена, что это правильный способ сделать это, поэтому ваше мнение очень приветствуется!
ISessionManager:
public interface ISessionManager
{
void RegisterSession(string key, object obj);
void FreeSession(string key);
}
SessionManager:
public class SessionManager : ISessionManager
{
private IDictionary<string, object> sessionDictionary;
public SessionManager(IDictionary<string, object> _sessionDictionary)
{
sessionDictionary = _sessionDictionary;
}
public IDictionary<string, object> Session
{
get
{
return sessionDictionary;
}
}
public void RegisterSession(string key, object obj)
{
sessionDictionary[key] = obj;
}
public void FreeSession(string key)
{
sessionDictionary[key] = null;
}
}
Затем, когда я захочу создать экземпляр класса (внутри моего веб-приложения), я бы сделал что-то вроде этого:
var sessionManager = new SessionManager(HttpContext.Current.Session);
sessionManager.RegisterSession["myKey"] = someObject;
Но я бы предпочел не использовать магические строки в качестве ключа. Я мог бы включить в класс постоянное строковое свойство, например sessionKey = "myKey", но это означало бы, что я могу хранить только один объект в диспетчере сеансов, верно?
Обратная связь, пожалуйста. :)