Tengo un IList<DerivedClass>
que quiero convertir a ICollection<BaseClass>
pero cuando intento un lanzamiento explícito, obtengo null
. ¿Es posible hacer esto sin crear y completar una nueva colección?Lanzando una colección genérica al tipo base
Editar: Ya que sólo quiero leer de la colección, que me pasa a utilizar un método genérico:
public void PopulateList<BaseClass>(ICollection<T> collection)
entonces puedo pasarle un IList<DerivedClass>
. ¿Hay una buena manera de almacenar en caché esta lista para que pueda actualizarla cuando sea necesario? Mi primera inclinación es usar:
Object cachedCollection;
Type cachedType;
public void PopulateList<BaseClass>(ICollection<T> collection) {
cachedCollection = collection;
cachedType = T;
// other stuff...
}
private void Refresh() {
PopulateList<cachedType>(cachedCollection as ICollection<cachedType>);
}
¿Alguien tiene una mejor manera de hacer esto?
Una muestra de código sería muy útil. Sin eso, es difícil darle algo como una respuesta útil. –