【问题标题】:Load Unity mappings from an XML File从 XML 文件加载 Unity 映射
【发布时间】:2012-06-01 22:10:53
【问题描述】:

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

UnityContainer.RegisterType<ClientRegistrationVM, ClientRegistrationVMDesign>();

通过 XML 文件加载它。

这将是一些我希望发生的伪代码。

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

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

Unity 能实现我想要的吗?以前有人做过吗?

【问题讨论】:

  • @SebastianWeber - 我“听说过 Google”(那里的语气有点侮辱)。我做了谷歌它。我只是不知道正确的短语。尝试用谷歌搜索“文件中的统一 ioc”你会得到的唯一相关命中是我的问题(当我用谷歌搜索时当然不存在)。
  • This 是使用您的搜索词在 Google 结果列表第一页上的第 5 个结果。因为它显示了使用 XML 的 Unity 示例配置,所以我认为这是一个相关的结果。
  • @SebastianWeber - 我没有看到。但即便如此,它还是使用了 App.Config。我需要一个独立的 xml 文件(由 nemesv 提供)。

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


【解决方案1】:

您可以在 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 2012-10-15
    • 2021-09-23
    • 2018-03-30
    相关资源
    最近更新 更多