J'utilise MVVM et dans une de mes machines virtuelles j'ai une propriété IsEditable
(enfin, ils le font tous à partir d'une classe de base) qui est utilisée par une série de boutons pour déterminer si leurs commandes peuvent Feu.Utilisation de Reflection pour obtenir le nom d'une variable
Cette machine virtuelle possède également une sous-machine virtuelle pour laquelle je dois renvoyer cette propriété IsEditable
à, actuellement je remplace ma méthode OnPropertyChanged
pour vérifier si la propriété en cours d'actualisation est .Equals("IsEditable")
.
J'ai un harcèlement qui me dit que ce n'est pas vraiment une bonne pratique, si ce IsEditable
est renommé dans le futur, alors cette fonctionnalité va se briser silencieusement. Y at-il une meilleure façon de faire, ou pour être en mesure d'utiliser le nom de la propriété avec la réflexion, .: par exemple
if (propertyRefreshName.Equals(IsEditable.Name))
{
// Echo down IsEditable change....
}
utilisant la réflexion dans le temps code critique est généralement pas une bonne idée car il peut être très lent. Il semble que vous allez l'exécuter dans le fil de l'interface utilisateur. Il se peut que le ralentissement ne soit pas perceptible au début, mais avec le temps, vous remarquerez peut-être que votre application commence à explorer sans raison évidente. Je recommanderais un mécanisme de notification comme le suggère Reed. – Dolphin