Quiero crear una clase que herede desde CollectionBase
, ¡pero parece que no admite extensiones LINQ!¿La clase CollectionBase aún es compatible?
¿Sigue siendo compatible? ¿O hay una solución alternativa?
Quiero crear una clase que herede desde CollectionBase
, ¡pero parece que no admite extensiones LINQ!¿La clase CollectionBase aún es compatible?
¿Sigue siendo compatible? ¿O hay una solución alternativa?
Todavía es compatible con, pero está obsoleto. En su lugar, siempre debe preferir utilizar las colecciones definidas en los espacios de nombres System.Collections.Generic
o System.Collections.ObjectModel
.
También puede heredar de una de las colecciones genéricas para crear su propia colección personalizada con caracteres fuertes. Y tendrá soporte completo para LINQ, ya que ya implementan IEnumerable<T>
.
O List<T>
o Collection<T>
son buenas opciones para su caso.
Evite las colecciones no genéricas como CollectionBase
, ArrayList
y HashTable
si es posible. Hay una penalización en el rendimiento al usarlos, y ofrecen pocas ventajas (si las hubiera) sobre las versiones genéricas que se introdujeron en las versiones más recientes del marco.
Comentario de [qtg] (https://stackoverflow.com/users/7368376/qtg) incorrectamente pasado como [ respuesta] (https://stackoverflow.com/a/47669778/5292302) * "¿Puede proporcionar algún enlace con respecto a obsoleto en MSDN oficial?" * –
Linq extensions are written for IEnumerable<T>
(Generic) y CollectionBase (No genérico) no hereda de él. Es por eso que no puedes usar Linq en eso.
Use System.Collections.ObjectModel.Collection<T>
en su lugar.
¿Por qué no simplemente implementar IEnumerable? –
Tejs
@Tejs: porque tengo alguna funcionalidad de validación y los encapsularía. – Homam
CollectionBase parece anticuado, pregenéricos. ¿Por qué querrías usarlo? –