2009-10-11 11 views
25

Microsoft'un Unity IOC kapsayıcısı ile çalışıyorum. injectionMembers parametreler için geçerlidir diye merak ediyorumRegisterType() içindeki InjectionMembers ne işe yarar?

IUnityContainer RegisterType(Type t, params InjectionMember[] injectionMembers); 

tüm görünümlü benzer RegisterType() yöntemi için aşırı bir demet vardır? Onlar için herhangi bir belge bulamadım (her aşırı yükte olsalar bile) ve bunları kullandığım örnek kodların hiçbiri yoktu.

Burada bir şey mi özlüyorum? Genellikle kullanılmıyor mu yoksa sadece örnekleri özledim mi? Eğer Birlik, yapılandırma dosyasında tanımlanan başka bir arada örneğini oluşturmak istiyorsanız verilen türünde bir örnek oluşturmak veya nasıl söyler bir yapılandırma dosyası vermeyin zaman

cevap

25

InjectionMember dizisi ile aşırı yük kullanılır .

Bir yapılandırma dosyasını yapılandırma dosyası olmadan yapılandırmak istediğinizde aşırı yüklenmeler kullanılır. Bir InjectionMember bir kurucu, özellik veya yöntem çağrısı olabilir.

Unity yardımından alınan aşağıdaki kod, kabın akıcı arabirimi aracılığıyla InjectionMembers'un nasıl kullanılacağını gösterir.

IUnityContainer myContainer = new UnityContainer(); 
myContainer.Configure<InjectedMembers>() 
    .ConfigureInjectionFor<MyObject>( 
    new InjectionConstructor(12, "Hello Unity!"), 
    new InjectionProperty("MyStringProperty", "SomeText")); 

aşağıdaki XML konfigürasyonu yukarıda kod eşdeğerdir.

<type type="MyObject" mapTo="MyObject" name="MyObject"> 
    <typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration"> 
    <constructor> 
     <param name="someInt" parameterType="int"> 
     <value value="12"/> 
     </param> 
     <param name="someText" parameterType="string"> 
     <value value="Hello Unity!"/> 
     </param> 
    </constructor> 
    <property name="MyStringProperty" propertyType="string"> 
     <value value="SomeText"/> 
    </property> 
    </typeConfig> 
</type> 
+0

birçok bölümü vardır ... Eğer sıfır veya daha fazla virgülle ayrılmış değerlere sahip olabilir ve dizi otomatik sihirli monte alır böylece InjectionMemeber, bir dizi türüdür ve son parametre olduğu için bu işleri düşünmek Birlik konteyneri Henüz kullanmaya gerek duymadım. Örneğiniz bunlardan birçoğuna çarptı (XML yapılandırması, PropertyInjection ve enjekte edilecek sabit parametrelerin konfigürasyonu. Bana doğru yönde işaret ettiğin için teşekkürler! Şimdi onlara ihtiyacım olmayabilir, ama neyin mevcut olduğunun farkında olmak güzel.) –

0

Ayrıca her aşırı görünmesi rağmen, bunlar gerekli değildir unutmayın.

Ben

+11

Neredeyse. Param anahtar kelimeler yüzünden. –

İlgili konular