2010-02-11 10 views
7

मैं आईओसी कंटेनर और इसी तरह के बारे में जानने के लिए स्ट्रक्चर मैप का नवीनतम निर्माण करने की कोशिश कर रहा हूं।संरचना मैप अपवाद कोड 205 गुमशुदा अनुरोध किया गया इंस्टेंस प्रॉपर्टी

public class Hospital 
    { 
     private Person Person { get; set; } 
     private int Level { get; set; } 

     public Hospital(Person employee, int level) 
     { 
      Person = employee; 
      Level = level; 
     } 

     public void ShowId() 
     { 
      Console.WriteLine(this.Level); 
      this.Person.Identify(); 
     } 
    } 

मैं तो इस तरह StructureMap का उपयोग करें::

static void Main() 
     { 
      ObjectFactory.Configure(x => 
             { 
              x.For<Person>().Use<Doctor>(); 
              x.ForConcreteType<Hospital>().Configure.Ctor<int>().Equals(23); 
             }); 

      var h = ObjectFactory.GetInstance<Hospital>(); 

      h.ShowId(); 
     } 

तो मैं अस्पताल में पहले निर्माता परम के रूप में एक डॉक्टर वस्तु गुजर रहा हूँ, और मैं अपने पहले टेस्ट के रूप में, मैं निम्नलिखित वर्ग है 'जब मैं ऊपर कोड मैं चलाने 23. करने के लिए level परम सेट करने का प्रयास हूँ:

बिना क्रिया के अपवाद: StructureMap.StructureMapException: StructureMap अपवाद कोड: 205 InstanceKey के लिए अनुरोध किया लापता उदाहरण संपत्ति "स्तर" "5f8c4b74-a398-43f7- 91d5-cfefcdf120cf"

तो यह है कि मैं बिल्कुल भी level परम की स्थापना नहीं कर रहा हूँ लग रहा है। क्या कोई मुझे सही दिशा में इंगित कर सकता है - मैं कन्स्ट्रक्टर में level परम कैसे सेट करूं?

चीयर्स। जैस।

उत्तर

12

आप बहुत करीब थे। आपने गोपनीय रूप से सिस्टम का उपयोग किया है। ऑब्जेक्ट। विधि विधि के बजाय निर्भरता अभिव्यक्ति पर विधि। मैं अस्पष्टता से बचने के लिए कन्स्ट्रक्टर तर्क नाम निर्दिष्ट करने के लिए स्ट्रिंग या मान प्रकारों (int, DateTime) जैसे सामान्य प्रकारों को कॉन्फ़िगर करते समय भी अनुशंसा करता हूं।

[TestFixture] 
public class configuring_concrete_types 
{ 
    [Test] 
    public void should_set_the_configured_ctor_value_type() 
    { 
     const int level = 23; 
     var container = new Container(x => 
     { 
      x.For<Person>().Use<Doctor>(); 
      x.ForConcreteType<Hospital>().Configure.Ctor<int>("level").Is(level); 
     }); 

     var hospital = container.GetInstance<Hospital>(); 

     hospital.Level.ShouldEqual(level); 
    } 
} 
+0

बढ़िया है, कि काम किया :) –

+0

मैं एक ऐसी ही समस्या है, एक ही त्रुटि संदेश के लिए यहाँ एक और संभव समाधान था:: http: // stackoverflow

यहाँ आप के लिए क्या देख रहे साथ मेरे परीक्षण है। com/प्रश्न/6998346/कह-structuremap के लिए उपयोग-एक और-निर्माता – Jaider

संबंधित मुद्दे