2011-11-16 10 views
5

मैं एक कोड निर्भरता है की बात यह है कि कुछ ऐसा नज़र है:ऑटोफ़ैक: PropertyWiringFlags.AllowCircularDependencies क्या करता है?

public class MyPage : Page //ASPX WebForms page 
{ 
    public IPersonBl PersonBl { get; set; } 

} 

public class PersonBl : IPersonBl 
{ 

    public PersonBl(ISomeMagicBl magicBl){...} 

} 

public class SomeMagicBl : ISomeMagicBl 
{ 
    public IPersonBl PersonBl { get; set; } 

    public SomeMagicBl(/*Other dependencies*/) {...} 
} 

मेरे मॉड्यूल विन्यास के रूप में

... 
builder.RegisterAssemblyTypes(ThisAssembly).Where(t => t.Name.EndsWith("BL")).AsImplementedInterfaces().PropertiesAutowired(PropertyWiringFlags.AllowCircularDependencies).InstancePerLifetimeScope(); 
... 

के रूप में देखा जा सकता है, मेरे पास मेरी कक्षाओं में परिपत्र निर्भरता इस प्रकार लग रहा है जिसे मैं ..PropertiesAutowired(PropertyWiringFlags.AllowCircularDependencies).. का उपयोग करके हल करने में सक्षम था।

मेरा प्रश्न: इन परिपत्र निर्भरताओं को हल करने के लिए दृश्यों के पीछे यह ध्वज वास्तव में क्या करता है ??

उत्तर

3

फ्लैग उस बिंदु को बदलता है जिस पर निर्माण के समय से बाकी के ग्राफ के निर्माण के बाद संपत्ति इंजेक्शन किया जाता है। यह चक्र में एक या अधिक घटकों पर निर्भर करता है जिसमें किसी प्रकार का साझाकरण (सिंगलटन या प्रति-अनुरोध) होता है - यहां तक ​​कि ध्वज के साथ, यदि सभी घटक उदाहरण-प्रति-निर्भरता हैं तो एक प्रकार का चक्र अभी भी मौजूद होगा।

ध्वज के बिना, ऑटोफैक घटक, गुणों या नहीं की सभी निर्भरताओं को मानता है, किसी भी अन्य घटक को इसका संदर्भ देने के लिए पूर्वापेक्षाएँ होती हैं। एक डिफ़ॉल्ट के रूप में यह अधिक विश्वसनीय है।

+0

बिल्कुल सही, thx। मैंने माना कि आपने इस तरह की रणनीति लागू की है, बस यह सुनिश्चित करना चाहता था :) – Juri

1

बस संदर्भ के लिए, गोलाकार निर्भरता को हल करने का एक और अच्छा तरीका Func<T> पर निर्भरता लेना है, जब तक आप निर्माता में func तक नहीं पहुंचते।

+0

क्या आप इस पर विस्तार कर सकते हैं? – Juri

+0

'आलसी 'भी काम करता है। म्यूचुअल कन्स्ट्रक्टर निर्भरता इतनी देर तक काम करती है क्योंकि निर्भरता में से एक निर्भरता प्रकार के रूप में आलसी/Func का उपयोग करता है। –

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