Spring.net - PropertyRetrievingFactoryObject - свойство равно нулю - PullRequest
2 голосов
/ 19 июля 2011

В попытке решить этот вопрос я рассмотрю, как работает наша конфигурация spring.net.

Основная проблема возникает из этого фрагмента:

<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, что нулевой объект приемлем в этом случае?

1 Ответ

3 голосов
/ 20 июля 2011

Вы можете использовать выражение , чтобы извлечь объект из контекста пружины в аргументе конструктора, например:

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

Выражениям разрешено принимать значение NULL, поэтому вам не нужно ничего говорить Spring. Это сработало для меня в простом случае (без вложенных контекстов).

...