Expression Spring.NET qui référence une définition d'objet
-
05-07-2019 - |
Question
J'essaie de référencer un autre objet que j'ai défini dans un fichier de configuration Spring à partir d'une expression. Plus précisément, j'essaie de renseigner une propriété avec la valeur d'une expression dans laquelle j'appelle une méthode, puis une propriété sur l'objet renvoyé par cette méthode.
J'ai essayé ce qui suit (les noms ont été changés):
<property name="NullableIntProperty"
expression="#{Some.Object.Id}.Get().NullableIntValue"/>
où Some.Object.Id
est une référence à un autre objet que j'ai défini dans un fichier de configuration, tel que:
<object id="Some.Object.Id" ... >
mais mon application ne parvient pas à démarrer avec l'exception d'analyse dans l'attente de "COLON", trouvé '}'
. Je pense que nous attendons un espace de noms, mais je ne trouve pas la documentation pour cela.
J'ai essayé plusieurs choses, mais partout je me retrouve dans une impasse. J'ai initialement essayé une combinaison de MethodInvokingFactoryObject
et de PropertyRetrievingFactoryObject
que nous utilisons ailleurs pour les types non nullables, mais cela échoue pour les nullables qui sont en réalité null
depuis que Spring voit une fabrique d'objets renvoyant null
comme un échec (ce qui est généralement le cas).
La solution
Vous pouvez utiliser la syntaxe d'expression @ (object-id-here)
pour récupérer un objet du contexte Spring à l'aide d'une expression :
<property name="NullableIntProperty"
expression="@(Some.Object.Id).PropertyOnSomeObject"/>
Autres conseils
Changer # en $ devrait résoudre le problème, je crois.