je le composant suivantWindsor Castle: Comment câbler un composant à une propriété d'usine plutôt que la méthode
public class MyTimer : IMyTimer {
public MyTimer(TimeSpan timespan){...}
}
Où timespan doit être fourni par la propriété ISettings.MyTimerFrequency.
Comment est-ce que je peux câbler ceci dans un conteneur xml? Je pensais que je pouvais faire quelque chose comme ceci:
<component id="settings"
service="MySample.ISettings, MySample"
type="MySample.Settings, MySample"
factoryId="settings_dao" factoryCreate="GetSettingsForInstance">
<parameters><instance_id>1</instance_id></parameters>
</component>
<component id="my_timer_frequency"
type="System.TimeSpan"
factoryId="settings" factoryCreate="MyTimerFrequency" />
<component id="my_timer"
service="MySample.IMyTimer, MySample"
type="MySample.MyTimer, MySample">
<parameters><timespan>${my_timer_frequency}</timespan></parameters>
mais j'obtiens une erreur car MyTimerFrequency est une propriété lorsque l'installation d'usine prévoit une méthode.
Y a-t-il une résolution simple ici? Est-ce que j'approche le tout de la mauvaise façon?
EDIT: Il y a certainement une solution, voir ma réponse ci-dessous.
Ou vous auriez pu vérifier les forums de château, où il a été répondu il ya quelque temps: http://forum.castleproject.org/viewtopic.php?t=4726 –
Les propriétés sont en fait des constructions CLR. Le fait que le compilateur C# choisisse de nommer la méthode getter get_MyProperty est seulement un détail d'implémentation. Un autre compilateur pourrait choisir un schéma de nommage différent et la propriété existerait toujours et fonctionnerait. Vérifiez la spécification: http://msdn.microsoft.com/fr-fr/library/65zdfbdt%28VS.71%29.aspx –