Espressione Spring.NET che fa riferimento a una definizione di oggetto
-
05-07-2019 - |
Domanda
Sto cercando di fare riferimento a un altro oggetto che ho definito in un file di configurazione Spring all'interno di un'espressione. In particolare, sto cercando di popolare una proprietà con il valore di un'espressione in cui chiamo un metodo e quindi una proprietà sull'oggetto restituita da quel metodo.
Ho provato quanto segue (i nomi sono stati cambiati):
<property name="NullableIntProperty"
expression="#{Some.Object.Id}.Get().NullableIntValue"/>
dove Some.Object.Id
è un riferimento a un altro oggetto che ho definito in un file di configurazione come:
<object id="Some.Object.Id" ... >
ma la mia app non si avvia con l'eccezione di analisi in attesa di " COLON " trovato '}'
. Penso che si aspetti uno spazio dei nomi, ma non sto trovando la documentazione per questo.
Ho provato diverse cose, ma ovunque ho raggiunto un vicolo cieco. Inizialmente ho provato una combinazione di MethodInvokingFactoryObject
e PropertyRetrievingFactoryObject
che utilizziamo in altri luoghi per tipi non annullabili, ma ciò non riesce per nullable che in realtà sono null
poiché Spring vede una factory di oggetti che restituisce null
come un errore (che di solito è).
Soluzione
Puoi usare la sintassi dell'espressione @ (object-id-here)
su recupera un oggetto dal contesto Spring usando un'espressione :
<property name="NullableIntProperty"
expression="@(Some.Object.Id).PropertyOnSomeObject"/>
Altri suggerimenti
Cambiare # in $ dovrebbe risolverlo, credo.