2017-02-01 3 views
2

J'utilise Mono.Cecil pour ajouter des champs et des méthodes à différents types, et je me demande comment nommer les membres pour éviter les conflits avec les membres existants. Ai-je besoin de parcourir chaque champ, méthode et propriété pour faire une comparaison de chaînes pour chaque membre que je veux ajouter, ou est-ce qu'il y a un moyen pour Cecil de choisir automatiquement un nom de membre gratuit pour moi?Comment nommer les nouveaux membres ajoutés par Mono.Cecil?

Répondre

3

Il est préférable d'utiliser des noms significatifs, à des fins de débogage (par exemple, lorsque ces noms peuvent apparaître dans des traces de pile). Cependant, pour éviter les conflits avec les membres existants, vous pouvez utiliser des caractères qui ne sont pas autorisés dans les identificateurs C#. Par exemple, vous pouvez nommer votre champ comme ceci: <YourLibraryName>_MeaningfulFieldNameHere. C'est ce que le compilateur C# fait lui-même pour les membres générés par le compilateur (comme le champ de support pour une propriété).

+0

Les noms significatifs sont super, mais si quelqu'un avait exécuté mon modificateur sur un assemblage dont il n'avait pas la source et qu'il avait cassé l'assemblage, cela aurait été plutôt catastrophique. L'utilisation de caractères non valides est une excellente solution. Pas à 100%, mais je serais plus susceptible de créer un bug en modifiant les méthodes pour utiliser le champ de toute façon. – SilentSin

+0

Notez que je suggère également d'utiliser plus ou moins le préfixe unique (YourLibraryName) pour réduire les chances de collision encore plus. – Evk