10
votes

Resharper Trouver modèle et remplacer - Comment insérer des chaînes

Nous avons une méthode de contrôle de santé à la santé xxx

invocation xxx

Je veux remplacer cela pour appeler l'autre surcharge qui prend une seconde paramètre String (message) xxx

donc je veux modifier l'invocation comme xxx

J'essaie de Atteindre cela en utilisant le modèle de recherche de Restomer et remplacer.

donc mon modèle de recherche est: isnotnull ($ args $) - cela fonctionne bien et il trouve les appels de méthode < p> Remplacer le modèle: isnotnull ($ args $, "$ args $ est null") - cela ne fait rien

J'ai également essayé ce isnotnull ($ args $, "" "" + $ ARGS $ + "" "" ")

- édité-- La boîte de suggestion indiquant le libellé correct (pour l'argument et l'identifiant), mais une fois appliqué, il est différent. J'utilise Resharper 6

Entrez la description de l'image ici

Après avoir appliqué la suggestion, je reçois cela Entrez la description de l'image ici

Quand je clique sur Modifier le modèle Entrez la description de l'image ici


1 commentaires

Qu'est-ce que r # utilisez-vous? J'ai essayé la version proposée par @hmemcy et tout fonctionnait bien. r # 7.1


3 Réponses :


1
votes

Vous pouvez envisager d'essayer d'utiliser ce modèle:

IsNotNull($args$, "$args$ is null")


2 commentaires

Dans ce cas, j'ai besoin du nom des arguments, pas de la valeur des arguments comme arg.tostring (). J'ai essentiellement besoin de joindre mes arguments avec des citations doubles


Je vois, désolé d'avoir mal compris, car j'ai utilisé pour tracer des valeurs de paramètre, pas le nom des arguments. Je vais essayer de voir si je peux modifier une solution pour répondre à votre besoin



7
votes

Quel est votre $ args $ paramètre défini comme dans la recherche et remplacer? Si vous devez être identifiant , vous remplacez-le devrait fonctionner:

Rechercher: isnotnull ($ args $) - où $ args $ $ est un identifiant
Remplacer: isnotnull ($ args $, "$ args $ est null")

Vous devriez avoir le résultat que vous voulez, c'est-à-dire isnotnull (obj, "obj est null") .


2 commentaires

Merci, malheureusement, cela n'a pas résolu le problème qu'il imprime toujours Isnotnull (Obj, Obj). Je veux mon deuxième paramètre ci-joint dans des guillemets doubles


"Où $ args $ est un identifiant" est la partie importante.



1
votes

La méthode la plus simple consisterait à réécrire la méthode d'origine comme: xxx pré>

puis cliquez sur la signature de la méthode et choisissez Refactor-> Méthode en ligne (Ctrl + R, Ctrl + i) . Si vous avez besoin de conserver la signature de méthode d'origine autour de la signature, vous pouvez ou vous pouvez cocher la case pour "supprimer la déclaration de méthode inlined". P>

EDIT: on dirait que la solution de HMEMCY fonctionne dans 7.1, donc je suggérerais Une mise à niveau. Cependant, si cela n'est pas possible, essayez l'expression régulière suivante Recherche-and-remplacer dans Visual Studio. P>

Find: IsNotNull\(([^\),]+)\);
Replace: IsNotNull($1, "$1 is null");


8 commentaires

Merci pour la réponse, mais votre suggestion ne résolvait pas mon problème dans le contexte du motif de remplacement de Resharper ou en général. Je veux que le message spécifique soit diplayé. Pas seulement 'obj est null', dans ma question, ce n'était qu'un exemple


@Nasmisabeer: pas de problème. En fait, je viens de le comprendre et de mettre à jour ma solution.


@Nasmisabeer: En réalité, il semble que la solution de HMEMCY est correcte. La clé est que $ args $ doit être défini comme un identifiant dans la recherche avec la boîte de dialogue Motif et non un argument. Je ne sais pas pourquoi ils ont la limitation de devis pour les espaces réservés d'arguments, mais les espaces d'identifiant semblent bien fonctionner.


Pouvez-vous donner un exemple que cela n'a pas fonctionné et quelle version de Resharper utilise-t-elle? Il semble fonctionner correctement sur mon système.


Merci. Pouvez-vous montrer ce qui se pose si vous cliquez sur le lien "Motif Motif"?


S'il vous plaît ma pièce jointe dans la question


Impair. J'ai utilisé exactement les mêmes paramètres et cela fonctionne parfaitement en utilisant l'identifiant. La seule différence que je peux voir est que vous utilisez Resharper 6, et je suis sur 7.1.1. Peut-être qu'ils ont réorganisé quelque chose dans l'intervalle. Pouvez-vous essayer la démo de 7,1 30 jours et voir si cela fonctionne avec cela?


Désolé pour le retard Chris, il m'a fallu un moment pour trouver un PC de secours avec Resharper 7. Merci de travailler en effet.