2012-06-01 7 views
5

desidero poter caricare i seguenti in Unity:mappature Unità di carico da un file XML

UnityContainer.RegisterType<ClientRegistrationVM, ClientRegistrationVMDesign>(); 

caricandola tramite un file XML.

Ecco un po 'di codice psudo di ciò che mi piacerebbe accadesse.

FileStream unityMappings = new FileStream(@".\UnityMappings.xml", FileMode.Open) 
UnityContainer.CreateFromXML(unityMappings); 
unityMappings.Dispose(); 

e il file UnityMappings.xml conterrebbe le mappature e le DLL che i tipi si trovano in.

è quello che voglio anche possibile con Unity? Qualcuno l'ha già fatto prima?

+2

@SebastianWeber - Ho "sentito parlare di Google" (un po 'offensivo nel tono lì). L'ho fatto a Google. Non conoscevo la frase giusta. Prova a google "unità ioc da file" L'unico risultato rilevante che otterrai è la mia domanda (che ovviamente non c'era quando ho cercato su Google). – Vaccano

+0

[Questo] (http://geekswithblogs.net/Sharpoverride/archive/2009/08/20/ioc-containers-in-.net-part-6-unity-container.aspx) è il quinto risultato della prima pagina dell'elenco dei risultati di Google utilizzando i termini di ricerca. Come mostra una configurazione di esempio per Unity usando XML, la considero un risultato rilevante. –

+0

@SebastianWeber - Non l'ho visto. Ma anche così che usi App.Config. Avevo bisogno di un file xml free standing (fornito da nemesv). – Vaccano

risposta

8

È possibile utilizzare la configurazione XML con Unity, è anche possibile combinare la configurazione di tempo di progettazione (XML) e la configurazione di runtime (codice).

Tuttavia il Design-Time Configuration utilizza il UnityConfigurationSection e il caricamento della configurazione è supportato solo da questo, quindi è necessario fare un po 'più di lavoro se si desidera avere la configurazione in un file diverso (ad esempio non app.config o web.config).

Per fortuna è possibile trovare un esempio nella documentazione sotto: Loading the Configuration from Alternative Files sezione:

using System.Configuration; 

var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = "unity.config" }; 

Configuration configuration = 
    ConfigurationManager.OpenMappedExeConfiguration(fileMap,     
                ConfigurationUserLevel.None); 

var unitySection = (UnityConfigurationSection)configuration.GetSection("unity"); 

var container = new UnityContainer().LoadConfiguration(unitySection); 
Problemi correlati