6

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

UnityContainer.RegisterType<ClientRegistrationVM, ClientRegistrationVMDesign>();

通过 XML 文件加载它。

这将是我想要发生的一些伪代码。

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

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

Unity 能实现我想要的吗?有没有人这样做过?

4

1 回答 1

8

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

但是,设计时配置使用UnityConfigurationSection并且仅通过它支持配置加载,因此如果您希望将配置放在不同的(例如,不是 app.config 或 web.config)文件中,则需要做更多的工作。

幸运的是,您可以在以下文档中找到示例:从备用文件加载配置 部分:

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);
于 2012-06-01T22:23:42.103 回答