6
votes

Comment trouver des invocations génériques avec un argument de type spécifique dans ma source?

J'ai une méthode générique

"Foo<TheType>("


1 commentaires

JetBrains commente sur Cet émission similaire / associé suggère que ce n'est pas disponible actuellement. Il me semble que la recherche structurelle et remplacer devrait être capable de le faire, mais je n'arrive pas à le faire fonctionner


6 Réponses :


-1
votes

Comme vous l'avez mentionné, vous pouvez utiliser la recherche de texte de " foo (" et " foo (thetype " où il est inféré


1 commentaires

Peut-être que je n'étais pas clair: il y a des centaines de types différents passés comme t, et on peut en déduire la plupart du temps quel type il est. Je veux trouver des appels où T est un type spécifique.



0
votes

Exécutez l'assemblage via ilasme et recherchez la signature de méthode appropriée, puis travaillez à l'envers dans le démontage pour obtenir un fichier source et un numéro de ligne.


1 commentaires

Ça marche. D'autre part, j'ai déjà une règle FXCOP qui me dit où sont ces appels. Je suis juste curieux si je peux le faire plus rapidement / plus facile que cela (c'est-à-dire directement à la source).



4
votes

Dans la version suivante de Resharper, cela sera couvert par la fonctionnalité "Recherche avec modèle". http://youtrack.jetbrains.net/issue/rsrp-288080


0 commentaires

2
votes

Vous pouvez éventuellement obtenir le compilateur pour vous aider à les trouver à l'aide de l'ancienne approche Break-it-it-and-and-See-What-Ne-compile: si le type T en question est votre propre code, essayez de changer de définition de sorte qu'il ne met plus implémente IsomeInterface.


0 commentaires

0
votes

J'ai essayé de suivre le modèle de recherche Restomer (Resharper-> Tools-> MotifCatalog-> Ajouter un motif):

Modèle de recherche: FOO ($ Arg $)
Espace réservé: arg = expression qui est de type thetype

Enregistrer ensuite et cliquez sur "Rechercher maintenant".


1 commentaires

Est-ce que cela fonctionne? Quelle version de Resharper? Est-ce la "prochaine" version Evgeny parlà dans sa réponse? Je n'ai que r # 5.1 pour le moment.



0
votes

Déclarez temporairement la méthode non générique et trouvez ses utilisations.

public void Foo(TheType arg)
{
}


0 commentaires