मैंने एक नई परियोजना पर काम करना शुरू किया और मैं प्रत्यक्ष और 'बेवकूफ' प्रोग्रामिंग से आया हूं।ऑटोफैक निर्भरता इंजेक्शन कार्यान्वयन
अभी मैं आईओसी कंटेनर का उपयोग करने के बारे में चिंतित हूं, विशेष रूप से ऑटोफैक का उपयोग करके निर्भरता इंजेक्शन पटर पर।
namespace Warehouse.Data
{
public class SessionFactory
{
private static ISessionFactory _sessionFactory;
private static ISystemSetting _systemSetting;
SessionFactory(ISystemSetting systemSetting)
{
_systemSetting = systemSetting;
InitializeSessionFactory();
}
private static void InitializeSessionFactory()
{
_sessionFactory = Fluently.Configure()
.Database(DatabaseConfiguration)
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<MyMap>())
.BuildSessionFactory();
}
public static ISession OpenSession()
{
return _sessionFactory.OpenSession();
}
}
}
और Bootstrap.cs में, मैं इस तरह autofac कॉन्फ़िगर करें::
- :
namespace Warehouse.Infrastructure { using Autofac; public class Bootstrap { public IContainer Configure() { var builder = new ContainerBuilder(); builder.RegisterType<SystemSetting>().As<ISystemSetting>(); builder.RegisterType<UserRepository>().As<IUserRepository>(); return builder.Build(); } } }
मेरा प्रश्न यह है
चलो कहते हैं कि मैं एक साधारण सत्र कारखाने करते हैं IystemSetting पर सत्र फैक्टरी निर्भरता को हल करने के लिए मैं ऑटोफैक का उपयोग कैसे करूं? क्या मुझे हर बार पैरामीटर के रूप में
builder.Resolve<ISystemSetting>
पैरामीटर के रूप में उपयोग करने की आवश्यकता है? - निर्भरता इंजेक्शन पैटर्न, या शायद ऑटोफैक, सेवा, संकल्प, सिंगलटन, आदि जैसे कई नए शब्द के साथ आता है। मैं इन चीज़ों को खरोंच से कहां से सीख सकता हूं? क्या यह हर दूसरे डी फ्रेमवर्क के लिए समान है?
- मुझे समझने की जरूरत है कि आईओसी कंटेनर एक परत में कई परतों के साथ कैसे काम करता है, क्या प्रत्येक परत को ऑटोफैक के संदर्भ की आवश्यकता होती है?
धन्यवाद।
मैं क्या न अपने उदाहरण में समझते हैं, अपने sessionfactory है, क्योंकि यह भी एक शामिल है "स्थिर ISessionFactory _sessionFactory,"। तो आप एक सत्र कारखाने में एक सत्र कारखाना encapsulate? ऐसा लगता है कि आप एक सत्र कक्षा बनाना चाहते हैं। – Egi