Per utilizzare Unity Container all'interno di un progetto ASP.NET MVC 5 è innanzitutto necessario installare il package NuGet Unity.Mvc e tutte le sue dipendenze, tramite l'interfaccia fornita da Visual Studio oppure tramite la command line del package manager digitando:
Install-Package Unity.Mvc
Una volta finita l'installazione possiamo notare due nuovi file all'interno della cartella App_Start ovvero:
- UnityConfig.cs
- UnityMvcActivator.cs
Il file UnityMvcActivator contiene un metodo Start che si occupa di settare durante la fase di startup Unity come dependency resolver all'interno della nostra Web application. Il file UnityConfig, invece, ci permette di registrare i vari tipi sul container grazie al metodo RegisterTypes. Per esempio, possiamo registrare un ipotetico servizio di configurazione come segue:
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<IConfiguration, ConfigurationService>();
}Completato questo primo step, terminiamo la configurazione del container registrando alcuni servizi/mapping utilizzati dal template base di ASP.NET MVC fornito da Visual Studio. Saltare questo step causerebbe dei crash nella nostra applicazione, causati dall'impossibilità di Unity di risolvere alcuni mapping e/o parametri di injection.
Completiamo il metodo RegisterTypes come segue:
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<IConfiguration, ConfigurationService>();
container.RegisterType<UserManager<ApplicationUser>>(
new TransientLifetimeManager());
container.RegisterType<IUserStore<ApplicationUser>,
UserStore<ApplicationUser>>(new TransientLifetimeManager());
container.RegisterType<DbContext, ApplicationDbContext>(
new TransientLifetimeManager());
container.RegisterType<AccountController>(new InjectionConstructor());
container.RegisterType<ManageController>(new InjectionConstructor());
}A questo punto siamo poi pronti a modificare il costruttore dell'HomeController esplicitando tramite un parametro la sua dipendenza ad un oggetto di tipo IConfiguration:
public class HomeController : Controller
{
private IConfiguration conf;
public HomeController(IConfiguration cnf)
{
if (cnf == null)
throw new ArgumentNullException("IConfiguration is null");
conf = cnf;
}
public ActionResult Index()
{
ViewBag.Minimum = conf.GetMin();
ViewBag.Maximum = conf.GetMax();
return View();
}
}Per completezza riportiamo brevemente il codice dell'interfaccia IConfiguration e della sua implementazione:
public interface IConfiguration
{
int GetMin();
int GetMax();
}
public class ConfigurationService : IConfiguration
{
public int GetMax()
{
return 1000;
}
public int GetMin()
{
return 10;
}
}A questo punto possiamo realizzare la view associata all'action Index:
@{
ViewBag.Title = "Home Page";
}
<div class="jumbotron">
<h1>From: @ViewBag.Minimum to @ViewBag.Maximum</h1>
<p class="lead">DI made easy with Unity.Mvc</p>
</div>Se abbiamo eseguito correttamente gli step precedenti, il risultato sarà qualcosa di questo tipo:

Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Integrare modelli AI in un workflow di GitHub
Eliminare record doppi in Sql Server
Utilizzare Intersect e Except per filtrare set di dati in TSql
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Testare il failover sulle region in Azure Storage
Utilizzare WebJobs su Linux con Azure App Service
Le cron expression di un workflow di GitHub
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Integrare un servizio esterno con .NET Aspire
Supportare la crittografia di ASP.NET Core con Azure Container App
Ospitare n8n su Azure App Service
I più letti di oggi
- Microsoft Security Bulletin MS02-027
- ASP.NET MVC in RC1, RTM entro un mese
- ASP.NET MVC Release Candidate 2
- Rilasciato SQL Server 2008 R2
- Windows Server AppFabric in versione 1.0 RTM
- Rilasciate le specifiche 1.2 di WSDL
- Rilasciati anche IIS 7.5 Express e SQL CE 4
- Disponibile una fix per ASP.NET 2.0, 3.5 e 4.0 relativa al rinoscimento delle prossime versioni di IE e Firefox
- Annunciate le versioni ufficiali di Visual Studio 11
- Tutto per portare Visual Studio 2015, ASP.NET 5 e Windows 10 sotto l'ombrellone!


