5

Possible en double:
Why doesn’t VS 2008 display extension methods in Intellisense for String classLes extensions LINQ énumérables sont masquées sur les chaînes ... pourquoi et comment?

Salut à tous.

Hier, j'ai remarqué que Enumerable exstensions LINQ sont cachés sur les chaînes (je veux dire caché de l'intellisense). Nous savons tous que string est un IEnumerable<char>, donc automatiquement il devrait obtenir des extensions Enumerable, et compile et fonctionne réellement si vous les utilisez, mais pourquoi les développeurs .NET ont décidé de les cacher à intellisense? Et enfin, comment pouvons-nous cacher les méthodes d'extension d'un type spécifique?

P.S. désolé pour mon mauvais anglais ...

EDIT: Je oublié de dire que je suis sur le ciblage NET 3.5 VS 2008

EDIT2: Voici 2 images de ce qui se passe:

IntelliSense sur la chaîne:

Intellisense on string http://img690.imageshack.us/img690/10/stringintelli.png

IntelliSense sur IEnumerab le:

Intellisense on enumerable http://img101.imageshack.us/img101/8828/enumintelli.png

+0

Avez-vous référencé System.Core comme un assembly? – codekaizen

+0

@codekaizen: Oui, je le fais – digEmAll

+1

Je ne sais pas pourquoi il est caché, mais je peux vérifier que les méthodes d'extension sont cachées pour les chaînes dans VS 2008, mais pas dans VS 2010. – Guffa

Répondre

1

Lorsque j'ai une chaîne s et de type s. j'obtiens toutes les méthodes d'extensions (comme FirstOrDefault etc).

J'ai vérifié avec VS2010 Express.

Vous devriez bien sûr avoir la portée static class System.Linq.Enumerable.


Quant à la Comment, je suppose que quelque chose comme this attribute a été utilisé sur la corde. Mais l'effacement de l'option "Hide advanced" pour C# n'a apporté aucun changement, donc ce n'est pas exactement cet attribut mais quelque chose de similaire.

Comme pour la partie Why, aucune idée. Mais intéressant qu'il a été changé pour Fx4

+0

Désolé, j'ai édité ma question, J'utilise VS2008 – digEmAll

+0

OK, vérifié. Dans VS2008, les méthodes n'apparaissent pas dans intellisense. –

+0

Eh bien, donc ce n'est pas seulement moi :). Une idée ? – digEmAll

2

pas sur ma copie de Visual Studio (qui est 2010, avec ReSharper installé):

alt text http://codeka.com/tmp/string-enumerable.png

Peut-être que vous avez oublié le using System.Linq; en haut? Ou peut-être ReSharper les ajoute, pas sûr ...

+0

J'ai édité ma question. J'utilise VS2008 et j'ai "using System.Linq" en haut. – digEmAll