Sto usando StructureMap per il mio DI. Immaginate Ho una classe che richiede 1 argomento come:Passare gli argomenti del costruttore quando si usa StructureMap
public class ProductProvider : IProductProvider
{
public ProductProvider(string connectionString)
{
....
}
}
ho bisogno di specificare il "ConnectionString in fase di esecuzione quando ricevo un'istanza di IProductProvider
Ho configurato StructureMap come segue.:
ForRequestedType<IProductProvider>.TheDefault.Is.OfConcreteType<ProductProvider>().
WithCtorArgument("connectionString");
Tuttavia, non voglio chiamare equalTo ("qualcosa ...") metodo qui come ho bisogno di qualche struttura per specificare questo valore in modo dinamico in fase di esecuzione.
La mia domanda è: come posso ottenere un'istanza di IProductProvider usando ObjectFactory?
Attualmente, ho qualcosa di simile:
ObjectFactory.GetInstance<IProductProvider>();
Ma, come sapete, questo non funziona ...
Qualsiasi consiglio sarebbe molto apprezzato.
Assicurarsi che someValueAtRuntime sia un valore semplice, non un qualsiasi tipo di Func o Lambda (se è possibile farlo) per recuperarlo, altrimenti tale funzione verrà eseguita ogni volta che la dipendenza viene risolta. Ho usato questo trucco per iniettare una stringa di connessione, proprio come stai facendo. Finché si ottiene la stringa in una variabile locale prima di impostare ObjectFactory, si dovrebbe andare bene. – Mel
Yo. Cosa succede se ho diversi argomenti, arg1, 2, 3 ecc. E voglio passare in ogni argomento così com'è, ma mantenere uno degli argomenti come null. Come fare questo? –
@Mosh grazie per la risposta, come mai, per favore, dimmi come stai passando qualcheValueAtRuneTime? un esempio di questo per favore. – wandos