2008-12-10 6 views
1

Je crois que je suis tombé sur cela il y a quelques mois, mais maintenant j'ai du mal à trouver la réponse. Peut-être que quelqu'un peut simplement me pointer vers la bonne section dans le documentation?Pouvez-vous copier des propriétés ou des valeurs constructor-arg à partir d'objets dans Spring.NET XML?

En utilisant Sprint.NET, je combine des fichiers XML distants dans un contexte d'application unique où les objets du moteur sont distincts 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 <property> et <constructor-arg> nœuds du xml du moteur: (utilisation expression attribut au lieu de value)

<object name="Engine"> 
    <constructor-arg index="0" value="business rule" /> 
</object> 

Soit faisant référence à une propriété d'un autre objet ou peut-être une liste de noms/valeurs spécialisées (par exemple, la version Spring de <appsettings>, quelle qu'elle soit) fonctionnerait.

Répondre

0

Trouvé! À partir de la page 41 du document Spring Framework (version 1.2.0 M1) PDF dans le chapitre "Le conteneur IoC":

5.3.8. Définir une référence en utilisant les 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 les membres d'autres objets et classes. Ce genre de scénario est assez fréquent, surtout face à des classes existantes que vous ne pouvez pas (ou pas) changement pour accueillir certaines des conventions de Spring.Net ... considérer le cas d'une classe qui a argument constructeur qui peut seulement être calculé en allant, par exemple, une base de données . Le gère MethodInvokingFactoryObject exactement ce scénario ... il vous permettra d'injecter le résultat d'un appel de méthode arbitraire dans un constructeur (comme argument) ou la valeur d'un poseur de propriété. De même, PropertyRetrievingFactoryObject et FieldRetrievingFactoryObject vous permettent d'extraire des valeurs d'une autre propriété ou valeur de champ de l'objet . Ces classes implémentent l'interface de IFactoryObject qui indique à Spring.NET que cet objet lui-même est une usine et le produit des usines, et non l'usine elle-même, est ce qui sera associé avec l'ID d'objet. Les objets d'usine sont discutés plus loin dans ???

Ceci est 5.3.9.1 dans le latest online documentation.