Se usa la sobrecarga con la matriz InjectionMember
, cuando no proporciona un archivo de configuración que Unity le dice cómo crear una instancia del tipo dado o si desea crear una instancia de otra manera que no sea definida en el archivo de configuración .
Las sobrecargas se utilizan cuando se desea configurar un contenedor de unidades sin un archivo de configuración. Un InjectionMember
puede ser una llamada de constructor, propiedad o método.
El siguiente código, tomado de la ayuda de Unity, muestra cómo usar InjectionMembers
a través de la interfaz fluida del contenedor.
IUnityContainer myContainer = new UnityContainer();
myContainer.Configure<InjectedMembers>()
.ConfigureInjectionFor<MyObject>(
new InjectionConstructor(12, "Hello Unity!"),
new InjectionProperty("MyStringProperty", "SomeText"));
La siguiente configuración XML es equivalente al código anterior.
<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>
Hay muchas partes del Contenedor de unidad que aún no he sentido la necesidad de usar. Su ejemplo coincide con varios de ellos (configuración XML, PropertyInjection y configuración de parámetros constantes para ser inyectados. ¡Gracias por apuntarme en la dirección correcta! Puede que no los necesite ahora, pero es bueno estar al tanto de lo que está disponible. –