从XML文件加载Unity映射

时间:2012-06-01 22:10:54

标签: inversion-of-control unity-container ioc-container

我希望能够将以下内容加载到Unity中:

UnityContainer.RegisterType<ClientRegistrationVM, ClientRegistrationVMDesign>();

通过XML文件加载。

以下是我希望发生的一些psudo代码。

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

UnityMappings.xml文件将包含类型所在的映射和dll。

我想要Unity甚至可能吗?有人曾经这样做过吗?

1 个答案:

答案 0 :(得分:8)

您可以在Unity中使用XML配置,甚至可以混合设计时配置(XML)和运行时(代码)配置。

然而Design-Time Configuration使用UnityConfigurationSection并且仅通过此支持配置加载,因此如果您希望将配置设置为不同(例如,不是app.config),则需要做更多的工作或web.config)文件。

幸运的是,您可以在以下文档中找到示例:Loading the Configuration from Alternative Files部分:

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