इस समस्या के समाधान के लिए मेरा संस्करण यहां है। सूचना है कि मैं भी साथ ही साथ एक निर्भरता इंजेक्शन का उपयोग, केवल प्रमुख अंतर यह है कि "सत्र" वस्तु को एक्सेस करने पर सिंगलटन
फेंक दिया है
private iSession _Session;
private iSession InternalSession
{
get
{
if (_Session == null)
{
_Session = new SessionDecorator(this.Session);
}
return _Session;
}
}
यहाँ
SessionDecorator वर्ग है, जो चारों ओर सत्र रैप करने के लिए एक डेकोरेटर पैटर्न का उपयोग करता है एक अंतरफलक:
public class SessionDecorator : iSession
{
private HttpSessionStateBase _Session;
private const string SESSIONKEY1= "SESSIONKEY1";
private const string SESSIONKEY2= "SESSIONKEY2";
public SessionDecorator(HttpSessionStateBase session)
{
_Session = session;
}
int iSession.AValue
{
get
{
return _Session[SESSIONKEY1] == null ? 1 : Convert.ToInt32(_Session[SESSIONKEY1]);
}
set
{
_Session[SESSIONKEY1] = value;
}
}
int iSession.AnotherValue
{
get
{
return _Session[SESSIONKEY2] == null ? 0 : Convert.ToInt32(_Session[SESSIONKEY2]);
}
set
{
_Session[SESSIONKEY2] = value;
}
}
}`
आशा इस मदद करता है :)
जवाब के लिए धन्यवाद। ऐसा लगता है कि कुछ निर्भरता इंजेक्शन ढांचे हैं। आप कौन सी डी ढांचे का सुझाव देते हैं? क्या DI पर कोई लेख पढ़ना आवश्यक है? :) – xraminx
यह मूल पोस्टर के लिए क्या पूछ रहा था के लिए अत्यधिक जटिल लगता है। –
@xraminx - डीआई फ्रेमवर्क के साथ मैं जो सुझाव दे रहा हूं उसे भ्रमित न करें। मैं DI, पैटर्न, ढांचे का उपयोग करने के बारे में बात कर रहा हूं। विचार यह है कि आप कक्षा बनाने के बजाय कक्षा में निर्भरता का एक उदाहरण पास करते हैं या एक स्थिर उदाहरण का उपयोग करते हैं। मॉकिंग के माध्यम से इकाई परीक्षण के लिए बहुत आसान है। – tvanfosson