मैं एक जेनेरिक रिपोजिटरी को लागू करने की कोशिश कर रहा हूं। यह मैं अब तक क्या मिल गया है है ...एक सामान्य रिपोजिटरी फैक्ट्री को कैसे कार्यान्वित करें?
public interface IRepositoryFactory
{
IRepository<T> RepositoryOf<T>() where T : class;
}
public class EntityFrameworkRepositoryFactory : IRepositoryFactory
{
private readonly IWindsorContainer _container;
public EntityFrameworkRepositoryFactory(IWindsorContainer container)
{
_container = container;
}
public IRepository<T> RepositoryOf<T>() where T : class
{
var repository = _container.Resolve<IRepository<T>>();
return repository;
}
}
RepositoryFactory, काम कार्यान्वयन की मेरी इकाई द्वारा प्रयोग किया जाता है
public interface IUnitOfWork : IDisposable
{
IRepository<T> RepositoryOf<T>() where T : class;
void Commit();
}
वैसे भी सवाल मैं पूछना चाहता हूँ है RepositoryFactory कार्यान्वयन होने कि क्या IWindsorContainer पर निर्भर सही है?
मैं, किसी भी प्रकार की एक IRepository के लिए पूछ का एक तरीका की जरूरत तो मेरे संस्थापक कोड इस ...
// Windsor Container
container.Register(
Component.For<IWindsorContainer>()
.Named("Container")
.Instance(container)
);
बस पूरे शायद आईओसी के पूरी अवधारणा के खिलाफ जाने के लिए लगता है, लेकिन फिर कौन सा
करता है एक भंडार मांगने का विचार वैसे भी करता है।
संपादित करें (miensol के जवाब देने के लिए उत्तर के रूप में)
मैं पहले ही अपनी संस्थापक में निम्न कोड के साथ मेरे लिए खजाने बनाने के लिए विंडसर उपयोग कर रहा हूँ ...
// Generic Repository
container.Register(
Component.For(typeof (IRepository<>))
.ImplementedBy(typeof (EntityFrameworkRepository<>))
.ServiceOverrides(
ServiceOverride.ForKey("objectContext").Eq("ObjectContext"))
);
मेरे पास है अतीत में सर्विस लोकेटर का उपयोग जो मैं चाहता हूं उसे प्राप्त करने के लिए किया, लेकिन पढ़ा है कि यह एक विरोधी पैटर्न है। तो इसका इस्तेमाल करने से बचने की कोशिश कर रहा था। हालांकि मुझे यह मानना है कि मुझे यकीन नहीं है कि, जैसा मैंने किया है, वह भी गलत लगता है क्योंकि मैं अपने आईओसी/डी ढांचे के रूप में कैसल विंडसर का उपयोग करने के लिए बाध्य हूं। सेवा लोकेटर फ्रेमवर्क अज्ञेयवादी होने के लिए है।
तो, मैं थोड़ा उलझन में हूँ!
जोड़ा गया यह एक उत्तर है, लेकिन यह एक टिप्पणी की और भी है - इन स्पर्शरेखीय उपयोगी हो सकता है (आज पहले एक ऐसी ही सवाल का जवाब दे): [1]: http://stackoverflow.com/questions/3175/ फिर से पॉजिटरी-पैटर्न-ट्यूटोरियल-इन-सी [2]: http://mikehadlow.blogspot.com/2008/03/using-irepository-pattern-with-linq-to.htm –
हां बहुत सारे प्रश्न हैं। मुझे लगता है कि मैंने उनमें से 3 का जवाब दिया है .. – RPM1984
@Tim: लिंक # 2 टूटा हुआ है। –