Estoy usando StructureMap para mi DI. Imagínese que tengo una clase que toma 1 argumento como:Pasando argumentos del constructor al usar StructureMap
public class ProductProvider : IProductProvider
{
public ProductProvider(string connectionString)
{
....
}
}
necesito especificar el "connectionString en tiempo de ejecución cuando llego a una instancia de IProductProvider
He configurado StructureMap de la siguiente manera.:
ForRequestedType<IProductProvider>.TheDefault.Is.OfConcreteType<ProductProvider>().
WithCtorArgument("connectionString");
sin embargo, no quiero llamar EqualTo ("algo ...") método de aquí, ya que necesito alguna facilidad para especificar dinámicamente este valor en tiempo de ejecución.
Mi pregunta es: ¿cómo puedo obtener una instancia de IProductProvider utilizando ObjectFactory?
Actualmente, tengo algo como:
ObjectFactory.GetInstance<IProductProvider>();
Pero como usted sabe, esto no funciona ...
Cualquier consejo sería muy apreciada.
Asegúrese de que someValueAtRuntime sea un valor simple, no cualquier tipo de Func o Lambda (si puede hacerlo) para recuperarlo, de lo contrario, esa función se ejecutará cada vez que se resuelva la dependencia. Usé este truco para inyectar una cadena de conexión, tal como lo estás haciendo. Siempre que ponga la cadena en una variable local antes de configurar ObjectFactory, debería estar bien. – Mel
Yo. ¿Qué pasa si tengo varios argumentos, arg1, 2, 3 etc. Y quiero pasar cada argumento como está pero mantener uno de los argumentos como nulo. ¿Como hacer esto? –
@Mosh gracias por la respuesta, ¿cómo puedes decirme cómo pasas algúnValueAtRuneTime? un ejemplo de eso, por favor. – wandos