2011-02-07 17 views
5

¿Es posible registrar y resolver tipos de matriz en un contenedor de Unity? Me gustaría hacer algo como esto:Solución de tipos de matriz en un contenedor Unity (prisma)

this.mContainer 
    .RegisterType<ISomeType, SomeType>() 
    .RegisterType<ISomeType[], SomeType[]>(); 
ISomeType[] lSomeTypes = this.mContainer.Resolve<ISomeType[6]>(); 

Sería aún mejor si no tienen que registrar el tipo de matriz, y tienen la Unidad averiguar la matriz basada en RegisterType<ISomeType, SomeType>() y Resolve<ISomeType[]>() solo.

+0

Se encontró documentación, pero no estaba muy claro ... http://msdn.microsoft.com/en-us/library/ff660882%28v=pandp.20%29.aspx#_Toc260122621 –

Respuesta

7

Si registra varios tipos para un tipo particular (usando registros con nombre), cuando el contenedor ve una dependencia en una matriz de ese tipo, automáticamente inyectará todos los registros nombrados.

Así que esto va a funcionar:

this.mContainer 
    .RegisterType<ISomeType, SomeImpl1>("one") 
    .RegisterType<ISomeType, SomeOtherImpl>("other") 
    .RegisterType,ISomeType, AnotherImpl>("another"); 

ISomeType[] someTypes = mContainer.Resolve<ISomeType[]>(); 

Esta lógica entrará en funcionamiento cada vez que hay una dependencia de [] ISomeType - parámetro de constructor, propiedad inyectado, etc.

Tenga en cuenta que la inyección array sólo inyectará nombrado registros. El registro predeterminado y sin nombre no está incluido en la matriz.

Cuestiones relacionadas