Spring.NET Creazione di oggetti con parametri
-
22-07-2019 - |
Domanda
Ho un oggetto con due parametri che deve essere creato tramite Spring.NET usando il file di configurazione per il disaccoppiamento.
public Object(string param1, string param2) { ... }
I due parametri vengono passati dinamicamente in base all'interazione dell'utente in cui passano un nome utente e una password, quindi questi valori non possono essere codificati nel file di configurazione. Pertanto non funzionerà quanto segue:
<object name="WinFormApplicationWorkflow" type="COM.Us.Workflow.ApplicationWorkflow, "COM.Us.Workflow ">
<!-- this will NOT work -->
<constructor-arg index="0" value="TESTUSER"></constructor-arg>
<constructor-arg index="1" value="TESTPW"></constructor-arg>
<!-- / -->
<property name="NetworkWorkflow" ref="NetworkWorkflow" />
<property name="ExceptionLogger" ref="ExceptionLogger" />
</object>
Come posso farlo con Spring.NET, in modo da poterlo fare solo:
ContextRegister.GetContext().GetObject("WinFormApplicationWorkflow");
Ma continuo a trasmettere i due parametri necessari alla mia classe di flusso di lavoro.
Soluzione
Puoi usare il metodo sovraccarico GetObject (stringa, oggetto []) dell'interfaccia Spring.Objects.Factory.IObjectFactory per passare i tuoi valori dinamici per la creazione di oggetti.
string userName = "Test";
string password = "Test";
object[] arguments = new object[] { userName, password };
ContextRegister.GetContext().GetObject("WinFormApplicationWorkflow", arguments);