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.

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top