2012-11-02 17 views
5

मैं कैसल 2.5.2 से 3.0 करने के लिए कुछ कोड का स्थान बदलना कर रहा हूँ, मैं पूर्वनिर्धारित पंजीकरण (मेरे बूट कोड में) का एक सेट है कि कुछ इस तरह के रूप सम्मेलनों पर आधारित सामग्री को करता है:कैसल विंडसर 3.0 ComponentRegistration "ServiceType"

container.Register 
(
    AllTypes.FromAssemblyInDirectory(new AssemblyFilter(".")) 
     .IncludeNonPublicTypes() 
     .Where(t => conventions.IsViewModel(t) && !conventions.IsExcluded(t)) 
     .WithService.Select((type, baseTypes) => conventions.SelectViewModelContracts(type)) 
     .Configure(r => 
     { 
        r.Properties(PropertyFilter.IgnoreAll); 

      if(conventions.IsShellViewModel(r)) 
      { 
       r.LifeStyle.Is(LifestyleType.Singleton); 
      } 
      else 
      { 
       r.LifeStyle.Is(LifestyleType.Transient); 
      } 
     }) 
); 

विंडसर 2.5.2 में घटक पंजीकरण श्रेणी में एक सेवा प्रकार की संपत्ति है, 3.0 में एक सेवा संपत्ति है लेकिन "आंतरिक संरक्षित" है।

मेरे सम्मेलन हैंडलिंग इस तथ्य पर निर्भर करता है कि मुझे यह जानने की जरूरत है कि कौन सी सेवाएं हैं।

मैं यह जानकारी कैसे प्राप्त कर सकता हूं?

मीटर

+0

वर्तमान में मैं आंशिक रूप से यह ComponentRegistration प्रतिबिंब का उपयोग पर सेवाएं प्रॉपर्टी एक्सेस समाधान कर लिया है, लेकिन PITA है। –

उत्तर

0

.WithServiceSelect अपनी जरूरत fullfill नहीं है?

+0

किस तरह से? समस्या घटक पंजीयन वर्ग पर है जो अब सेवा प्रकार के बारे में जानकारी का खुलासा नहीं करती है (या सेवाओं को यह वही होगा)। –

0

मैं आज भी वही चीज़ अनुभव कर रहा था। इसे नीचे की तरह हल किया गया है, जो काम करता है क्योंकि हम कुछ सम्मेलनों का पालन करते हैं। यह नहीं लग रहा है जैसे कि यह एक अच्छा समाधान है हालांकि ...

.Configure(x => x.Named("I"+x.Implementation.Name)) 
संबंधित मुद्दे