2012-06-01 13 views
5

me gustaría ser capaz de cargar el siguiente en la Unidad:asignaciones de la unidad de carga de un archivo XML

UnityContainer.RegisterType<ClientRegistrationVM, ClientRegistrationVMDesign>(); 

cargándolo a través de un archivo XML.

Aquí debería haber algún código psudo de lo que me gustaría que sucediera.

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

y el archivo UnityMappings.xml contendría las asignaciones y las DLL que los tipos se encuentran en.

es lo que quiero, incluso es posible con la unidad? ¿Alguien ha hecho esto antes?

+2

@SebastianWeber - He "oído hablar de Google" (un poco insultante en el tono de allí). Lo hice Google. Simplemente no sabía la frase correcta. Intenta buscar en google "unity ioc from file" El único hit relevante que obtendrás es mi pregunta (que por supuesto no estaba allí cuando busqué en Google). – Vaccano

+0

[Este] (http://geekswithblogs.net/Sharpoverride/archive/2009/08/20/ioc-containers-in-.net-part-6-unity-container.aspx) es el quinto resultado en la primera página de la lista de resultados de Google utilizando sus términos de búsqueda. Como muestra una configuración de muestra para Unity usando XML, lo considero un resultado relevante. –

+0

@SebastianWeber - No vi eso. Pero incluso eso usa App.Config. Necesitaba un archivo xml independiente (proporcionado por nemesv). – Vaccano

Respuesta

8

Puede usar la configuración XML con Unity, incluso puede mezclar la configuración del tiempo de diseño (XML) y la configuración del tiempo de ejecución (código).

Sin embargo, el Design-Time Configuration utiliza el UnityConfigurationSection y la carga de configuración es compatible únicamente a través de esta lo que necesita para hacer un poco más de trabajo si usted quiere tener la configuración de archivo diferente (por ejemplo, no app.config o web.config).

Por suerte se puede encontrar una muestra en la documentación en: Loading the Configuration from Alternative Files sección:

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); 
Cuestiones relacionadas