Tempo fa si discuteva sul blog di Ayende, sul discorso tecniche di inversione di controllo etc etc, in sostanza ci si chiedeva se questi concetti sono alla portata dello sviluppatore medio, oppure se sia possibile "far digerire" ai project manager l'idea di usare librerie Open Source (Spring.Net o Castle) in progetti reali. Questo ultimo punto è particolarmente sensibile, perché talvolta la reticenza è alta, la diffidenza verso l'Open Source è ancora radicata in certi casi. Questo però non vuole dire rinunciare in partenza a scrivere codice basandosi sui sani principi della IoC dato che alla fine con tre righe di codice si può comunque fare IoC rudimentale.
private static IConnector CreateConnector() {
String ConnectorTypeName = ConfigurationManager.AppSettings["IConnectorService"];
Type ConnectorType = Type.GetType(ConnectorTypeName, true);
return (IConnector) Activator.CreateInstance(ConnectorType);
}
Ok, non si ha il controllo sul ciclo di vita dell'oggetto, bisognerebbe gestire le eccezioni per generare un errore significativi e mancano tante altre cose tipo la configurazione delle proprietà, ma il suo sporco lavoro lo fa, mi permette di specificare da file di configurazione la classe da utilizzare per soddisfare l'interfaccia IConnector e questo mi permette ad esempio di specificare dal file di configurazione una classe apposita per fare i test. Siamo ben lontani dalla potenza di Spring o Castle, ma il risultato è soddisfacente e non si debbono iniziare epiche discussioni sul codice Open Source.
Alk.