Colecciones genericas

17/03/2009 - 12:02 por Albert | Informe spam
Hola,
He definido una interface generica con un conjunto de metodos y me gustaria hacer una lista de clases que implementen la interface,
pero tengo que especificar el tipo, y quiero que la lista pueda contener cualquier implementacion de la clase. ?Existe alguna manera de hacerlo?

Interface myInterface<T>
{
...
T Value { get: set; }
...
}


List<T> lista; // No funciona, hay que especificar el tipo
List<T<String>> lista; // Funciona pero fuerza a que todos los elementos sean de tipo String, y no quiero

-

A la lista generica le he hecho implementar otra interface y en este caso funciona perfectamente, pero no me parece elegante crear una
interface sin metodos o propiedades...

Interface myInterface<T> : myUnionInterface
{
...
T Value { get: set; }
...
}


Interface myUnionInterface {}


List<myUnionInterface> lista; // Funciona pero fuerza a la implementacion de una interface vacia

-

Preguntas similare

Leer las respuestas

#1 Jerónimo Milea
08/05/2009 - 20:41 | Informe spam
Así, sin pensar se me ocurre que con boxing/unboxing lo puedes resolver
aunque habría que ver tus requerimientos de rendimiento y uso de memoria,
puedes hacer:
List<myInterface<object>> lista;
Eso funciona, aunque no estoy seguro que sirva a tu propósito.

Si de verdad no sabes nada sobre el tipo a instanciar tal vez sería mejor
usar Reflection...

Espero te sirva
Jerónimo Milea


"Albert" escribió en el mensaje de
noticias:exO4o#
Hola,
He definido una interface generica con un conjunto de metodos y me
gustaria hacer una lista de clases que implementen la interface,
pero tengo que especificar el tipo, y quiero que la lista pueda contener
cualquier implementacion de la clase. ?Existe alguna manera de hacerlo?

Interface myInterface<T>
{
...
T Value { get: set; }
...
}


List<T> lista; // No funciona, hay que especificar el tipo
List<T<String>> lista; // Funciona pero fuerza a que todos los elementos
sean de tipo String, y no quiero

-

A la lista generica le he hecho implementar otra interface y en este caso
funciona perfectamente, pero no me parece elegante crear una
interface sin metodos o propiedades...

Interface myInterface<T> : myUnionInterface
{
...
T Value { get: set; }
...
}


Interface myUnionInterface {}


List<myUnionInterface> lista; // Funciona pero fuerza a la
implementacion de una interface vacia

-


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida