2016-06-04 1 views
1

j'ai deux classes qui ont des champs qui ne sont attribuées ou non utilisées par la réflexion. En conséquence, les champs mènent aux avertissements suivants:CS0169 et CS0649 Suppress

CS0169: The field [...] is never used 
CS0649: Field [...] is never assigned to, and will always have its default value 0 

Une solution serait, d'utiliser le SuppressMessageAttribute sur toutes ces classes, mais cela semble impur, comme les classes appropriées déjà ont un attribut personnalisé.

je préférerais quelque chose comme ceci:

[KeepMyFields] 
class SomeClass 
{ 
    int usedField; 
} 

class KeepMyFieldsAttribute : System.Diagnostics.CodeAnalysis.SuppressMessageAttribute 
{ 
    // [...] 
} 

Cependant, SuppressMessageAttribute est scellé. Quelles autres options ai-je, à part ajouter un extrait de code à chaque classe pertinente? Une tâche MSBuild personnalisée peut-elle convenir ou existe-t-il un moyen plus simple?

+0

Voir ici: http://stackoverflow.com/a/3821035/5311735 – Evk

+0

La solution proposée, il est d'ajouter '# pragma' à chaque classe. Cela ne semble pas être une manière propre, pas plus que la conversion de tous les champs en propriétés. –

Répondre

1

Si vous cherchez une solution « propre », vous pouvez supprimer tous les avertissements de ce type dans le projet entier, dans le projet options de construction: enter image description here Bien sûr, cela cachera les avertissements pour les autres classes, ainsi (que vous probablement ne veut pas), mais vous pouvez déplacer toutes les classes problématiques dans un projet séparé et lui appliquer ce paramètre.