लोगों के शानदार जवाब, लेकिन मैं आपको हमेशा सत्र पर भरोसा करने के खिलाफ सावधान करूंगा। ऐसा करना त्वरित और आसान है, और निश्चित रूप से काम करेगा लेकिन सभी cicrumstances में महान नहीं होगा।
उदाहरण के लिए यदि आप ऐसे परिदृश्य में भाग लेते हैं, जहाँ आपकी होस्टिंग सत्र उपयोग की अनुमति नहीं देती है, या यदि आप वेब फ़ार्म पर हैं, या साझा SharePoint एप्लिकेशन के उदाहरण में हैं।
यदि आप एक अलग समाधान चाहते हैं तो आप कैसल विंडसर जैसे आईओसी कंटेनर का उपयोग कर देख सकते हैं , एक रैपर के रूप में एक प्रदाता वर्ग बनाना और फिर अपनी आवश्यकताओं के आधार पर प्रति अनुरोध या सत्र जीवन शैली का उपयोग करके अपनी कक्षा का एक उदाहरण रखना।
IOC यह सुनिश्चित करेगा कि प्रत्येक बार एक ही उदाहरण लौटाया जाए।
अधिक जटिल हां, यदि आपको एक सरल समाधान की आवश्यकता है तो सत्र का उपयोग करें।
यहां कुछ कार्यान्वयन उदाहरण नीचे दिए गए हैं।
इस पद्धति का उपयोग करके आप एक प्रदाता वर्ग बना सकते हैं:
public class CustomClassProvider : ICustomClassProvider
{
public CustomClassProvider(CustomClass customClass)
{
CustomClass = customClass;
}
public string CustomClass { get; private set; }
}
और इसे कुछ इस तरह पंजीकृत करें:
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Component.For<ICustomClassProvider>().UsingFactoryMethod(
() => new CustomClassProvider(new CustomClass())).LifestylePerWebRequest());
}