मैं भंडार पैटर्न और निर्भरता इंजेक्शन के लिए काफी नया हूं। लगभग सभी भंडार पैटर्न मैं का सामना करना पड़ा तो जैसे GetAll() विधि के कुछ प्रकार है:संग्रहीत प्रक्रियाओं के साथ रिपोजिटरी पैटर्न
public interface IRepository<T>
{
IQueryable<T> GetAll();
// other CRUD methods here...
}
मैं एक मुद्दा इस इंटरफेस और GetAll() विधि को लागू करने क्योंकि मैं एक संग्रहीत प्रक्रिया बोल रहा हूँ हो रही है कि एक पैरामीटर की आवश्यकता होती है जो उपयोगकर्ता के इनपुट के आधार पर बदलती है। मैं भंडार इंटरफ़ेस में विज्ञापन-कार्य विधि नहीं जोड़ना चाहता हूं उदा। IQueryable<T> GetAll(string input);
। मैं भी निर्माता के लिए एक पैरामीटर जोड़ने के लिए नहीं करना चाहते हैं, क्योंकि यह मेरे लिए थोड़ा गंदा दिखता है:
public class ConcreteRepository : IRepository<Entity>
{
string _storedProcedureInput;
public ConcreteRepository(string storedProcedureInput)
{
_storedProcedureInput = storedProcedureInput;
public IQueryable<Entity> GetAll()
{
// Call to stored procedure goes here passing in the
// _storedProcedureInput variable.
}
}
मैं भी निर्भरता इंजेक्शन का उपयोग कर रहा तो मैं जब बाध्यकारी निर्माता के लिए कुछ गतिशील इनपुट जोड़ना होगा :
Bind<IRepository<Entity>>().To<ConcreteRepository>().WithConstructorArgument(?)
कोई सुझाव?
अद्यतन:
मैं IRepository इंटरफ़ेस पुन: उपयोग करना चाहते हैं। उदाहरण के लिए, एक प्रोग्राम में मैं GetAll() विधि को लागू करने के लिए ईएफ 4 का उपयोग कर रहा हूं, और दूसरे प्रोग्राम में मैं ऊपर दिए गए उदाहरण की तरह संग्रहीत प्रक्रिया को कॉल करने के लिए मानक ADO.NET का उपयोग कर रहा हूं।
आपका कोड बिल्कुल ठीक दिखता है और रिपोस्टिटरी पैटर्न के अनुसार। –