c# - propiedades - ¿Por qué VS 2008 no muestra los métodos de extensión en Intellisense para la clase String?
metodos en visual basic (3)
Dado que String implementa IEnumerable<char>
, esperaba ver los métodos de extensión Enumerable en Intellisense, por ejemplo, al escribir el período en
String s = "asdf";
s.
Esperaba ver. .Select<char>(...)
, .ToList<char>()
, etc. Me sorprendió ver que los métodos de extensión sí funcionan en la clase de cadena, simplemente no lo hacen aparecer en Intellisense. ¿Alguien sabe a que se debe esto? Esto puede estar relacionado con esta pregunta.
Es por diseño explícito. El problema es que si bien String definitivamente implementa IEnumerable<T>
, la mayoría de la gente no piensa en eso, o lo que es más importante, lo usa de esa manera.
String tiene una cantidad bastante pequeña de métodos. Inicialmente no filtramos los métodos de extensión de String y el resultado fue una gran cantidad de comentarios negativos. Casi triplicó el número de métodos a veces con las importaciones correctas. Con todos los métodos de extensión mostrados, las personas a menudo no podían ver el método String que estaban buscando en el ruido.
String es un ... tipo simple y es mejor verlo de esa manera :)
Todavía es completamente posible llamar a un método de extensión en cadena. Es probable que no se muestre en intellisense.
EDITAR: Cadena en realidad tiene bastantes métodos. Pero debido a que muchos de ellos son sobrecargas, colapsan en intellisense.
Debería.
For example you can write it public static string myExtensionMethod(this String yuppi){
}
Entonces se supone que está allí.
Para información, esto ha cambiado en VS2010 (en beta 2, al menos). Parece que este filtrado ha sido eliminado (presumiblemente causó demasiada confusión), y los métodos ahora son visibles, junto con el glifo de método de extensión.