检索在Spring.NET中配置对象的配置文件路径

时间:2011-05-21 09:44:31

标签: c# spring.net

我想在Spring.NET中配置一个能够读取其他配置文件的对象。这些文件应该相对于Spring.NET配置文件(或者如果Spring.NET配置存在于app.config中)而定位。

所以我需要的是一种方法来找出我的对象的对象定义来自哪个配置文件。或者如果没有配置文件(因为它已经以编程方式配置)。

如果没有通用的解决方案(我担心没有...),专门针对XmlApplicationContext的解决方案也会这样做。

我到目前为止尝试的是从IApplicationContextAware派生,然后将应用程序上下文转换为XmlApplicationContext。它包含属性ConfigurationLocations。 但是,自ConfigurationLocations

以来,这不起作用
  • 受到保护,因此无法访问
  • 是一个文件数组,所以如果有多个文件,我不知道我的对象来自哪个文件
  • 特定于XmlApplicationContext(如上所述:ok但不是最佳的)
  • 我确定如果config在app.config中,这将不起作用。

我的问题有解决办法吗?

1 个答案:

答案 0 :(得分:1)

我可以确认,无法将为Context定义的特定对象的ObjectDefinition与已注册的ObjectDefinition的特定“source”相关联。

Context的底层ObjectFactory的设计具体是这样的,它不需要知道/关心ObjectDefinition元数据的起源,而是在初始化ObjectFactory时将所有元数据合并在一起。

我会注意到“跟踪”配置文件的路径b / c虽然这可能适用于您的特定用例,但它不太可能成为问题的良好通用解决方案b / c Spring.NET配置文件设计的一个重要原则是,一个配置文件可以“导入”一个或多个其他配置文件,这些配置文件又可以导入一个或多个其他配置文件,因此知道其中一个的完整路径相互依赖的配置文件不一定(必然)与包含您正在寻找的特定对象的元数据的实际配置文件的路径有关。

同样,如果您完全控制配置文件的格式/内容,那么您的解决方案可能是可行的,但请注意它可能不是一个好的通用解决方案。