Lorsque j'utilise Typesafe paramètres d'application, j'ai quelque chose comme ça dans mon fichier app.exe.config:Surveiller les modifications apportées aux paramètres dans app.config
<setting name="IntervalTimeout" serializeAs="String">
<value>10</value>
</setting>
Le Settings.Designer.vb fait quelque chose comme ceci:
<Global.System.Configuration.ApplicationScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("10")> _
Public ReadOnly Property IntervalTimeout() As Integer
Get
Return CType(Me("IntervalTimeout"),Integer)
End Get
End Property
Et je peux accéder au paramètre avec quelque chose comme ceci:
Settings.IntervalTimeout
Quelle est la meilleure pratique pour surveiller les modifications apportées à ce paramètre de l'extérieur. C'est à dire. le paramètre est utilisé par une application qui s'exécute en tant que service et quand quelqu'un ouvre le fichier de configuration corresponsant et modifie IntervalTimeout pour dire 30, l'application de service est notifiée et fait tout ce que je lui dis de faire pour se reconfigurer.
Habituellement, je l'aurais utilisé quelque chose comme ceci lors de l'initialisation:
AddHandler Settings.PropertyChanged, New PropertyChangedEventHandler(AddressOf Settings_PropertyChanged)
Et puis mettre en œuvre un eventHandler qui vérifie le nom de la propriété qui a changé et réagit de façon appropriée.
Toutefois, l'événement PropertyChanged n'est déclenché que lorsque la méthode Set est appelée sur une propriété, et non lorsque quelqu'un modifie les données directement dans le fichier. Bien sûr, cela aurait été le paradis, mais compréhensible que ce n'est pas la façon dont cela fonctionne. ;-)
Très probablement, j'implémenterais un système de fichiers pour surveiller les modifications apportées au fichier, puis recharger la configuration, découvrir ce qui a changé et faire tout ce qui est nécessaire pour refléter ces changements.
Est-ce que quelqu'un connaît un meilleur moyen? Ou même un supporté? ASP.NET surveille le fichier Web.config pour les modifications.