Je viens de commencer à travailler avec FxCop pour voir à quel point mon code ne fonctionne pas avec son ensemble de règles. Je commence avec les règles "Breaking", et le premier que j'ai rencontré est CA2227, qui dit essentiellement que vous devez faire en sorte que le setter de la propriété d'une collection ne soit pas modifié accidentellement. Depuis que j'utilise MVVM, j'ai trouvé très pratique d'utiliser un ObservableCollection avec des propriétés get/set parce que mes mises à jour de GUI sont faciles et concises dans le code-behind. Cependant, je peux aussi voir ce que FxCop se plaint. Une autre situation que je viens de rencontrer est avec WF, où j'ai besoin de définir les paramètres lors de la création du flux de travail, et je détesterais avoir à écrire une classe wrapper autour de la collection que j'utilise juste pour éviter cela message d'erreur particulier.FxCop déteste mon utilisation de MVVM
Par exemple, voici un message d'erreur d'exécution exemple que je reçois quand je fais des propriétés en lecture seule:
The activity 'MyWorkflow' has no public writable property named 'MyCollectionOfStuff'
Que faites-vous des opinions à ce sujet? Je pourrais soit ignorer cette erreur particulière, mais ce n'est probablement pas bon parce que je pourrais éventuellement violer cette règle ailleurs dans le code où MVVM ne s'applique pas (code de modèle seulement, par exemple). I pense Je pourrais également le changer d'une propriété à une classe avec des méthodes pour manipuler la collection sous-jacente, et puis soulever la notification nécessaire de la méthode de setter. Je suis un peu confus ... quelqu'un peut-il nous éclairer là-dessus?
c'est bon à savoir, merci pour l'explication. Cependant, cela n'aide pas dans la situation Windows Workflow. Je vais mettre à jour ma question avec un message d'erreur d'exécution spécifique. – Dave
Pourquoi ne pas simplement ignorer cet article rapporté? Vous pouvez utiliser l'attribut System.Diagnostics.CodeAnalysis.SuppressMessage pour ignorer ces fausses alarmes. –
@Lex: Je le fais maintenant pour ces instances spécifiques. Sur une note légèrement liée, j'ai rencontré des problèmes avec SuppressMessage dans un cas spécifique (global). Avez-vous des suggestions pour cela? http://stackoverflow.com/questions/2542883/globally-disabling-fxcop-errors-in-teamcity – Dave