使用Spring.NET IoC将依赖项对象注入属性。该应用是一个Outlook插件。
代码:
IApplicationContext ctx = ContextRegistry.GetContext();
this.Property = (MyObject)ctx.GetObject("MyObject");
配置:
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
</sectionGroup>
</configSections>
<spring>
<context>
<resource uri="config://spring/objects"/>
</context>
<objects xmlns="http://www.springframework.net">
<description></description>
<!--Business Logic Layer Binding Objects-->
<object name="MyObject"
type="Quadrant2.MSCRM.Recruit.OfficeAddins.Toolbar.BusinessLogic.Q2_Win_SearchClient_Logic, Quadrant2.MSCRM.Recruit.OfficeAddins.Toolbar.BusinessLogic">
<property name="SearchClientDAL" ref="DAL_SearchClient"/>
</object>
<!-- snip -->
此代码运行良好约2年,然后我们升级了一些围绕Outlook的程序集以在Outlook 2010中运行以及一些功能区修改 - 我认为没有任何影响Spring.NET的内容。
开始在GetContext();
调用中抛出“传递给GetContext方法的上下文名称不能为null或为空”异常。仔细观察后,我注意到rootContextName
是空的 - 公平的电话,解释了我认为的例外。
还要注意,代码在调试期间运行正常但在调试之外运行时失败。在安装过程中,已检查的dll,依赖项和配置都在正确的位置。
“强制馈送”GetContext();
一个上下文名称,“spring.root”根据调试会话rootContextName
值,异常消失,但IApplicationContext
返回null。
这里有任何想法或明显的问题吗?