Pouvez-vous copier la propriété ou les valeurs de constructeur-arg à partir d'objets dans Spring.NET XML?
-
21-08-2019 - |
Question
Je crois que je suis tombé sur ce il y a quelques mois, mais maintenant je vais avoir du mal à trouver la réponse. Peut-être que quelqu'un peut me pointer vers la partie droite de la ?
Utilisation Sprint.NET , je combine des fichiers XML à distance dans un contexte d'application unique où les objets du moteur sont séparer des objets de règles métier. Le problème est une partie des règles de gestion sont des valeurs, pas des objets, qui sont nécessaires par et <property>
noeuds dans le <constructor-arg>
xml moteur:
<object name="Engine">
<constructor-arg index="0" value="business rule" />
</object>
Soit faisant référence à une propriété d'un autre objet (utilisation attribut au lieu de expression
value
?) Ou peut-être une liste nom / valeur spécialisée (par exemple la version de printemps à <appsettings>
, quelle qu'elle soit) travailleraient.
La solution
Je l'ai trouvé! À partir de la page 41 du Cadre de printemps (version 1.2.0 M1) PDF dans "Le conteneur IoC" chapitre:
5.3.8. Définition d'une référence à l'aide des membres d'autres objets et classes.
Cette section décrit les scénarios de configuration qui impliquent la définition des propriétés et arguments du constructeur en utilisant le membres d'autres objets et classes. Ce genre de scénario est assez fréquent, surtout face à l'héritage les classes que vous ne pouvez pas (ou pas) changer pour tenir compte de certains des Les conventions de Spring.Net ... considèrent le cas d'une classe qui a argument du constructeur qui ne peut être calculée en allant à-dire un base de données. le poignées MethodInvokingFactoryObject exactement ce scénario ... il vous permettent d'injecter le résultat d'une invocation de méthode arbitraire dans un constructeur (comme argument) ou en tant que valeur d'un setter de propriété. De même, PropertyRetrievingFactoryObject et FieldRetrievingFactoryObject vous permet pour récupérer les valeurs d'un autre propriété de l'objet ou la valeur champ. Ces cours mettent en œuvre la Interface IFactoryObject qui indique à Spring.NET que cette objet lui-même est une usine et la produit des usines, et non l'usine lui-même, est ce qui sera associé avec l'ID d'objet. objets d'usine sont discutés plus loin dans ???
Ceci est 5.3.9.1 dans le dernière documentation en ligne .