Autofac not passing same instance to resolved arguments in constructor -


मैं निम्नलिखित सेटअप

  सार्वजनिक वर्ग CommonClass: ICommonClass {} सार्वजनिक वर्ग SomeClass: ISomeClass {सार्वजनिक SomeClass (ICommonClass आम, IOtherClass otherClass) {}} सार्वजनिक वर्ग OtherClass: IOtherClass {सार्वजनिक OtherClass (ICommonClass आम) {}} // पंजीकरण builder.RegisterType & LT; CommonClass & gt; () के रूप में के & lt; ICommonClass & gt; () InstancePerDependency (।। ); builder.RegisterType & LT; SomeClass & gt; () के रूप में। & lt; ISomeClass & gt; () InstancePerDependency ()।; builder.RegisterType & LT; OtherClass & gt; () के रूप में। & lt; IOtherClass & gt; () InstancePerDependency ()।;  

मैं प्रत्येक कन्स्ट्रक्टर में समान तर्क को समान उदाहरण के लिए चाहूंगा, लेकिन कुछ क्लास का हल हो जाने पर आईकॉममन का नया इंस्टेंस बनाने के लिए। मैं इस समय कैसे हो सकता है। मैं उन्हें InstancePerLifetimeScope के रूप में पंजीकृत करने का प्रयास किया, लेकिन यह SingleInstance के रूप में ही काम किया।

InstancePerDependency जब आप हर निर्भरता के लिए नए उदाहरणों की आवश्यकता होती है, तो जाने का तरीका होता है अब अलग-अलग आश्रित वर्गों के लिए अलग-अलग जीवन काल होने के लिए मुश्किल है और सही नहीं लगता है। आप आप इस व्यवहार शायद एक बेहतर तरीका पाया जा सकता है क्यों की जरूरत पर विस्तृत कर सकते हैं

जिसके अनुसार, पूरा करने के लिए आप क्या पूछना है (हालांकि मैं यह पसंद नहीं है;)।, आप एक "उदाहरण धारक उपयोग कर सकता है "। मेरा विचार है कि नियमित निर्भरता के लिए, नए सामान्य उदाहरणों को सामान्य रूप में पेश किया जाएगा। लेकिन विशेष मामला SomeClass के लिए, आम उदाहरण इस धारक वर्ग कि हमेशा एक ही उदाहरण में कार्य करता है से प्राप्त की है:

  सार्वजनिक वर्ग CommonHolder {सार्वजनिक ICommonClass उदाहरण {मिल; प्राइवेट सेट;} सार्वजनिक कॉमनहाल्डर (आईसीमनक्लास आम इन्स्टैन्स) {इंस्टेंस = कॉमन इंस्टेंस; }}  

और फिर पंजीकरण सेटअप:।

  builder.RegisterType & LT; CommonHolder & gt; () SingleInstance (); builder.RegisterType & LT; OtherClass & gt; () के रूप में। & lt; IOtherClass & gt; () InstancePerDependency ()।; builder.RegisterType & LT; CommonClass & gt; () के रूप में। & lt; ICommonClass & gt; () InstancePerDependency ()।; builder.RegisterType & LT; SomeClass & gt; () InstancePerDependency ()।; बिल्डर। पंजीयक (सी = & gt; सी। रिसोलवे & लेफ्टिनेंट; कुछ क्लास & gt; (टाइप किया गया पैरामेटर। से (सी। रिज़ोलिव & लेफ्टिनेंट; कॉमनहाल्डर & gt; (इंस्टेंट)))। एएस & lt; आईएसएमएक्लास & gt; ()।  

Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -