के लिए इंजेक्शन उदाहरण का उपयोग करने के लिए संरचना मैप संभव नहीं है मुझे अपने परीक्षणों के लिए structmap में एक उदाहरण इंजेक्शन देने में समस्या है।स्ट्रक्चर इंजेक्शन
मेरे वस्तुओं ग्राफ इस
internal class ConfigurationManager : IConfigurationManager : IManager
{
public ISomeManager SomeManager { get; set; }
}
internal class SomeManager : ISomeManager : IManager
{
public IConfigurationManager ConfigurationManager { get; set; }
}
1) पहले मैं कंटेनर बनाने और सभी पाया रजिस्ट्रियों जोड़ने
_container = new Container(c => c.Scan(s =>
{
s.TheCallingAssembly();
s.LookForRegistries();
}));
इन स्कैन किया विधानसभाओं में से एक निम्नलिखित पंजीकरण होता है की तरह लग रहा
x.For<IConfigurationManager>().Singleton.Use<ConfigurationManager>();
2) तो मैं इस प्रबंधकों
_configurationManagerStub = MockRepository.GenerateStub<IConfigurationManager>();
_container.Inject(_configurationManagerStub);
3) तो प्रबंधक उदाहरणों के लिए कॉन्फ़िगर सेटर इंजेक्शन के बिना बनाई गई हैं के लिए एक विशेष नकली वस्तु सुई (परिपत्र निर्भरता से बचने के लिए)
foreach (Type pluginType in AllManagers())
{
managerInstances.Add(_container.GetInstance(pluginType));
}
चाहते 4) आखिर में मैं इमेजगर प्रकार की गुण सेट करने के लिए BuildUp विधि का उपयोग करता हूं।
_container.Configure(x => x.SetAllProperties(c =>
{
// configure the property injection for all managers
c.Matching(prop => typeof(IManager).IsAssignableFrom(prop.PropertyType));
}));
// push in dependencies -> EXCEPTION
managerInstances.ForEach(x => _container.BuildUp(x));
दुर्भाग्य से कोड की अंतिम पंक्ति में मुझे निम्नलिखित अपवाद मिलता है।
StructureMap.StructureMapException: StructureMap अपवाद कोड: IConfigurationManagerProxyd079980359cf491b821a3afb15be8a86, DynamicProxyGenAssembly2 के लिए एक InstanceBuilder बनाने के प्रयास में 245 त्रुटि, संस्करण = 0.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = अशक्त ----> सिस्टम .ArgumentException: प्रकार 'System.Object' की अभिव्यक्ति प्रकार विधि की 'System.String' के पैरामीटर के लिए नहीं किया जा सकता 'Castle.Core.Interceptor.IInterceptor [] GetIInterceptor []'
जब मैंने इंस्टेंस इंजेक्ट किया था तो structmap एक इंस्टेंसबिल्डर का उपयोग करने का प्रयास क्यों करता है?
बीआर, डेविड
क्या आपने इस समस्या को हल किया है? मेरे पास एक ही अपवाद है। – AdamSane