2010-07-04 15 views
5

Duplicar posible:
Why doesn’t VS 2008 display extension methods in Intellisense for String classLas extensiones enumerables de LINQ están ocultas en las cadenas ... ¿por qué y cómo?

Hola a todos.

Ayer noté que Enumerable LINQ exstensions están ocultos en las cadenas (me refiero oculto al intellisense).

Todos sabemos que la cadena es IEnumerable<char>, por lo que automáticamente debería obtener extensiones Enumerable, y en realidad compila y funciona si las usa, pero ¿por qué los desarrolladores de .NET decidieron ocultarlas de intellisense?

Y, por último, ¿cómo podemos ocultar los métodos de extensión de un tipo específico?

P.S. lo siento por mi mala Inglés ...

EDIT: me olvidó decir que estoy de orientación .NET 3.5 en VS 2008

Edit2: Aquí 2 imágenes de lo que sucederá:

Intellisense en cadena:

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

Intellisense en IEnumerab LE:

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

+0

¿Tiene System.Core referenciado como un conjunto? – codekaizen

+0

@codekaizen: Sí, lo hago – digEmAll

+1

No sé por qué está oculto, pero puedo verificar que los métodos de extensión estén ocultos para las cadenas en VS 2008, pero no en VS 2010. – Guffa

Respuesta

1

Cuando tengo una cadena s y escribo s. obtengo todos los métodos de extensión (como FirstOrDefault, etc.).

Comprobé con VS2010 Express.

Por supuesto, debe tener el alcance static class System.Linq.Enumerable.


En cuanto a la parte Cómo, supongo que algo así this attribute se utilizó en cadena. Pero borrar la opción "Ocultar avanzado" para C# no produjo ningún cambio, por lo que no es exactamente este atributo sino algo similar.

En cuanto a la parte de por qué, no tengo idea. Pero es interesante que fue cambiado para Fx4

+0

Lo siento, edité mi pregunta, estoy usando VS2008 – digEmAll

+0

OK, verificado. En VS2008, los métodos _no_ aparecen en intellisense. –

+0

Oh, bueno, entonces no soy solo yo :). Alguna idea ? – digEmAll

2
No

en mi copia de Visual Studio (que es de 2010, con ReSharper instalado):

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

Tal vez se le olvidó la using System.Linq; en la parte superior? O tal vez ReSharper los está agregando, no estoy seguro ...

+0

Edité mi pregunta. Estoy usando VS2008 y tengo "using System.Linq" en la parte superior. – digEmAll

Cuestiones relacionadas