Questa è la mia prima volta che utilizzo Unity, quindi abbi pazienza per un momento. Ho un progetto di Visual Studio 2012 di esempio con 4 progetti (ma solo due di questi progetti verranno utilizzati con Unity). Questa è la seguente configurazione dei progetti:
-
Database
- Progetto WinForm che visualizza un modulo dettagli principale -
DatabaseUtilities
- Una libreria di classi che implementa il modello di repository. L'interfaccia si chiama ISampleRepository.cs e il tipo si chiama SampleRepository.cs
Ho letto su Dependency Injection e capisco che il codice UnityContainer
viene posizionato nella posizione iniziale in cui verrà eseguita l'applicazione.
Dovrebbe andare in Database.Program.cs o in una classe Bootstrapper.cs che risiede nel progetto DatabaseUtilities
?
Chiedo perché Program.cs è tecnicamente il punto di accesso al progetto Database WinForm.
Ecco il mio codice per Bootstrapper.cs:
using Microsoft.Practices.Unity.Configuration;
namespace DatabaseUtilities
{
public class Bootstrapper
{
private static UnityContainer _container;
public static ISampleRepository<Employee> LoadSampleRepository()
{
_container = new UnityContainer();
_container.RegisterType(typeof(ISampleRepository<Employee>), typeof(SampleRepository));
var obj = _container.Resolve<ISampleRepository<Employee>>();
return obj;
}
}
}
Sto pensando di fare riferimento a Bootstrapper.cs da Program.cs nel progetto Database.
Ma sarebbe considerata una buona pratica? Inoltre, voglio assicurarmi di non spararmi ai piedi più tardi. Diciamo che decido di implementare un altro modulo dal modulo MasterDetail
e ho bisogno di eseguire un'operazione CRUD diversa (ad esempio un'operazione di aggiornamento). Voglio poter utilizzare la mia classe che implementa IRepository
.
Sto guardando questo dall'angolo retto?