लंबे समय तक पाठक पहली बार लेखक। मैं वर्तमान में एक सरल सी # .NET अनुप्रयोग के लिए कैसल विंडसर की वर्तमान रिलीज के लिए निनजेक्ट के उपयोग से रूपांतरण कर रहा हूं।कैसल विंडसर: एकाधिक रचनाकारों के साथ समस्या
अधिकांश भाग के लिए, रूपांतरण अच्छी तरह से चला गया है और कंटेनरों के कार्यान्वयन ने निष्पक्षता से निष्पादित किया है। हालांकि मुझे अपने भंडार वस्तुओं के साथ एक छोटा सा मुद्दा है।
public class UserRepository : IUserRepository {
public UserRepository(IObjectContext objectContext) {
// Check that the supplied arguments are valid.
Validate.Arguments.IsNotNull(objectContext, "objectContext");
// Initialize the local fields.
ObjectContext = objectContext;
}
public UserRepository(IObjectContextFactory factory)
: this(factory.CreateObjectContext()) {
}
// -----------------------------------------------
// Insert methods and properties...
// -----------------------------------------------
}
इस कोड के अनुरूप करने के लिए, मैं सेटअप अपने आवेदन के विन्यास फाइल में निम्नलिखित प्रविष्टियों:
<castle>
<components>
<component id="objectContextFactory" lifestyle="custom"
customLifestyleType="Common.Infrastructure.PerWebRequestLifestyleManager, Common.Castle"
service="Project.DAL.Context.IObjectContextFactory, Project.DAL.LINQ"
type="project.DAL.Context.ObjectContextFactory, Project.DAL.LINQ">
</component>
<component id="userRepository" lifestyle="custom"
customLifestyleType="Common.Infrastructure.PerWebRequestLifestyleManager, Common.Castle"
service="Project.BL.Repository.IUserRepository, Project.BL"
type="Project.BL.Repository.UserRepository, Project.BL.LINQ">
<parameters>
<factory>${objectContextFactory}</factory>
</parameters>
</component>
</components>
</castle>
मैं एक उपयोगकर्ता भंडार उद्देश्य यह है कि निम्नलिखित फैशन में कोडित है है मेरे लिए, सब कुछ ऐसा दिखता है। जब मैं IObjectContextFactory सेवा के उदाहरण को हल करने का प्रयास करता हूं, तो मैं ऑब्जेक्ट कॉन्टेक्स्ट फ़ैक्टरी ऑब्जेक्ट पुनर्प्राप्त करता हूं। मेरी समस्या तब आती है जब मैं IUserRepository सेवा के उदाहरण को हल और हल करता हूं। मुझे निम्नलिखित आनंददायक अपवाद के साथ इलाज किया जाता है:
घटक 'उपयोगकर्ता रिपोजिटरी' नहीं बना सकता क्योंकि इसकी निर्भरता संतुष्ट होने के लिए है। UserRepository निम्नलिखित निर्भरता के लिए इंतज़ार कर रहा है:
सेवाएं:
- SandCastle.DAL.Context.IObjectContext which was not registered.
मैं सब कुछ मैं इस पर सोच सकते हैं की कोशिश की है। तो, आप स्टैक ओवरफ्लो पाठकों के लिए, मैं कहता हूं: कोई विचार मिला?
gangbusters की तरह काम किया! धन्यवाद! – highvoltage
"विंडसर लालची कन्स्ट्रक्टर से मेल खाता है (सबसे अधिक पैरामीटर जो इसे संतुष्ट कर सकता है)"। मुझे लगता है कि यह कहने के लिए और अधिक सही है कि "रचनाकारों की सूची से केवल संकल्पनीय पैरामीटर होते हैं, अधिकांश पैरामीटर वाले कन्स्ट्रक्टर को चुना जाता है"। – Steven
@Steven अब के बारे में कैसे? –