He creado un proyecto PCL que apunta a .NET Framework 4 y Silverlight 5 (utilizo una extensión para Visual Studio 2010, no una plantilla de proyecto portátil de Visual Studio 2012, si eso importa). Estoy intentando invertir una cadena utilizando el método de extensión System.Linq.Enumerable.Reverse<TSource>()
, pero no funciona porque el compilador cree que System.String
no implementa IEnumerable<char>
.¿Por qué la clase String no implementa IEnumerable <char> en una biblioteca portátil?
Respuesta
Las bibliotecas de clases portátiles deben restringirse a las clases y métodos que están disponibles en todas las plataformas de destino que promete admitir. El mayor alborotador aquí es WinRT, el CLR tiene una proyección de lenguaje que asigna tipos WinRT a tipos administrados. Los métodos System.String no admitidos por la proyección están documentados en this answer. GetEnumerator() es uno de ellos.
Eso tiene sentido, por no seleccionar WinRT (en realidad, se llama .NET para aplicaciones de estilo Metro en la ventana de selección de marcos) como un marco de destino. Creo que PCL debería funcionar como una intersección de plataformas/marcos seleccionados. –
Bueno, el objetivo de PCL es que * quizás * seleccione WinRT algún día. –
Parece que tenemos visiones ligeramente diferentes aquí, pero voy a aceptar su respuesta por el momento, ya que no veo ningún otro punto que tenga sentido. ¡Gracias! –
- 1. ¿Por qué IEnumerable <T> no implementa Agregar (T)?
- 2. Por qué java.util.Properties implementa Map <Object, Object> y no Map <String, String>
- 3. ¿Por qué una función que toma IEnumerable <interface> no acepta IEnumerable <class>?
- 4. ¿Por qué IEnumerable <T> hereda de IEnumerable?
- 5. ¿Cómo se implementa IEnumerable <T>
- 6. ¿Por qué ArrayList implementa IList, ICollection, IEnumerable?
- 7. ¿Por qué TreeNodeCollection no se aplica IEnumerable <TreeNode>?
- 8. Cómo puedo dividir un IEnumerable <String> en grupos de IEnumerable <string>
- 9. ¿Por qué no puedo incluir IEnumerable <struct> como IEnumerable <object>?
- 10. ¿Por qué no puedo usar LINQ to Objects cuando mi clase implementa IEnumerable <T> varias veces?
- 11. IEnumerable <string> a cadena
- 12. ¿Por qué no hay una clase ReadOnlyList <T> en la biblioteca System.Collections de C#?
- 13. Por qué IEnumerable <T> se define como IEnumerable <out T>, no IEnumerable <T>
- 14. Serializar propiedades personalizadas en una clase que implementa IEnumerable
- 15. ¿Por qué necesito IEnumerator.Current en una clase que implementa IEnumerator <T>?
- 16. Convertir IEnumerable <T> a string []
- 17. ¿Por qué las matrices en .net solo implementan IEnumerable y no IEnumerable <T>?
- 18. ¿Qué es una biblioteca de clases portátil?
- 19. ¿Por qué no puedo crear un diccionario <string, dictionary <string, string >>?
- 20. Cómo ordenar un IEnumerable <string>
- 21. ¿Por qué String es una clase?
- 22. ¿Por qué la clase String es definitiva?
- 23. Datatable implementa IEnumerable?
- 24. Fundición de IEnumerable <Object> a IEnumerable <string>
- 25. ¿Por qué HttpSessionState no implementa IDictionary?
- 26. C# LINQ - No se puede convertir implícitamente IEnumerable <string> a la lista <string>
- 27. ¿Por qué no Cast <double>() funciona en IEnumerable <int>?
- 28. ¿Cuál es la diferencia entre List <string> e IEnumerable <String>?
- 29. ¿Cómo puedo ver si GenericTypeDefinition implementa IEnumerable <>
- 30. ¿Por qué IList <T> no tiene Insertar métodos que toman IEnumerable <T>?
¿Estás seguro de que no implementa 'IEnumerable', o Intellisense simplemente lo oculta? –
CodesInChaos
Sí, estoy seguro, recibo un error cuando intento compilarlo. –
Hmm acaba de comprobar los documentos, y 'GetEnumerator' no forma parte de PCL. ¿Qué estaba pensando MS? – CodesInChaos