2011-07-18 90 views
2

爲了解決this問題,我正在看看我們的spring.net配置是如何工作的。Spring.net - PropertyRetrievingFactoryObject - 屬性爲null

問題的根源來源於此片段:

<object name="someObject" singleton="false" type="SomeType.someObject, SomeAssembly"> 
    <constructor-arg name="authSession"> 
    <object type="Spring.Objects.Factory.Config.PropertyRetrievingFactoryObject, Spring.Core"> 
     <property name="TargetObject" ref="AuthSessionManager" /> 
     <property name="TargetProperty" value="CurrentAuthSession" /> 
    </object> 
    </constructor-arg> 
</object> 

在用戶沒有登錄的情況下,將AuthSessionManager.CurrentAuthSession爲空。在這種情況下,Spring.NET會拋出一個異常:「工廠對象返回空對象」。

如何告訴Spring在這種情況下空對象是可以接受的?

回答

3

您可以在構造函數的參數使用expression to retrieve an object from the spring context,是這樣的:

<object name="someObject" singleton="false" 
     type="SomeType.someObject, SomeAssembly"> 
    <constructor-arg name="authSession" 
        expression="@(AuthSessionManager).CurrentAuthSession" /> 
</object> 

表達式允許評估爲null,所以你不必告訴Spring什麼。 這對我來說很簡單(沒有嵌套上下文)。

+0

我最終以一種不同的方式解決了這個問題,但是回過頭來測試一下,它也起作用了。謝謝! :d – Jonas