微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 在多个配置文件中重新定义spring.net对象

我正在使用 spring.net IOC依赖注入为我的asp.net Web应用程序设置我的xml配置文件.我在web.config中引用了我的每个配置文件. spring.net配置文件(settings.xml)中的设置示例如下:
<object id="obj1"
      type="NS.Common.Cache.Class,NS.Common"
      singleton="true"
      init-method="Initialize"
      destroy-method="dispose">
  <property name="Name" value="My Name" />
</object>

一切正常.

现在我在多个环境中安装我的Web应用程序,所以我正在为环境创建一个spring.net配置文件,例如. dev,qa,prod.

因此,在安装应用程序时,web.config中会引用适用的环境spring文件.这是自动安装程序的一部分.

在qa环境文件中,我想将“obj1”上面的对象重新定义为:

<object id="obj1"
    type="NS.Common.Cache.Class2,NS.Common"
    singleton="true"
    init-method="Initialize"
    destroy-method="dispose">
  <property name="Name" value="My New Name" />
</object>

但是,由于这是自动的(添加对环境文件的引用),因此不会更改settings.xml文件.

现在引用带有相同id的已定义对象的2个文件 – 这会导致严重的问题,因为会发生运行时错误.

是否有任何方法可以包含在qa.xml和flag等中以突出显示此对象定义覆盖具有相同对象ID的任何其他xml文件中的任何其他已定义对象?

解决方法

您可以加载两个相同的ID,最后一个id将“覆盖”第一个列出的对象(在创建之前,它们必须通过在上下文定义中引用它们而在不同的文件中).
<context ...>
   <resource ... /> <!-- put your 3rd-party (read-only config here) -->
   <resource ... /> <!-- put your override ids here -->
</context>

由于这种认行为,最好将您的上下文资源按照以“全局含义”开头的顺序(例如,您想要重用的第三方配置)包含到“本地含义”(将app.config作为最后一个条目).

原文地址:https://www.jb51.cc/csharp/99383.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐