Trabajando con genericos

25/01/2007 - 10:37 por ANT1 | Informe spam
Hola de nuevo.

Sigo estudiando los genericos y como funcionan. Ahora estoy intentando
hacer un metodo que me devuelva un List<T> y que T este definido dentro
de las propiedades que se pasan al metodo. Algo asi:

public List<T> CrearLista(Type T)
{
...
// Codigo para crear el List<T> llamada MiLista
...
return MiLista;
}

pero claro me da error diciendome que T no ha sido definida. He probado
a definir en la clase un Type T, pero me da el error que estoy usando
un campo (field) como un tipo.

¿Se puede hacer de alguna manera lo que busco?

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
25/01/2007 - 10:51 | Informe spam
"ANT1" wrote in message
news:
[...]
public List<T> CrearLista(Type T)
[...]
¿Se puede hacer de alguna manera lo que busco?



Creo que lo que quieres es esto:

public List<T> CrearLista<T>()
{
return new List<T>();
}
Respuesta Responder a este mensaje
#2 ANT1
25/01/2007 - 11:59 | Informe spam
Muchas gracias.

Era eso, estaba trantando de pasar el tipo T como parametro. No cai en
hacer el metodo<>.

Una preunta que no es sobre genericos pero viene al caso de lo que
estoy haciendo.

Tengo una clase ObjetoBase con el metodo que he comentado antes
(llamado CrearLista). De esta clase hereda Persona (por poner un
ejemplo) y tiene el metodo estatico CargarLista(). Es decir:

public static List<Persona> CargarLista()
{
return CrearLista<Persona>();
}

Y claro por tanto el metodo CrearLista del ObjetoBase ha de estar
definido tambien como estatico. A mi no me interesa que en el programa
principal se pueda acceder al metodo del ObjetoBase. Es decir, desde el
programa principal quiero que puedan hacer esto:

List<Persona> listaPersonas = Persona.CargarLista();

pero no quiero que puedan hacer:

List<Persona> listaPersona = ObjetoBase.CrearLista<Persona>();

me gustaria que solo se pudiese acceder a CrearLista<> desde la clase
Persona.

¿Se puede hacer esto?

On 25 ene, 10:51, "Alberto Poblacion"
wrote:
"ANT1" wrote in messagenews:

> [...]
> public List<T> CrearLista(Type T)
>[...]
> ¿Se puede hacer de alguna manera lo que busco? Creo que lo que quieres es esto:

public List<T> CrearLista<T>()
{
return new List<T>();
}
Respuesta Responder a este mensaje
#3 Alberto Poblacion
25/01/2007 - 12:23 | Informe spam
"ANT1" wrote in message
news:
me gustaria que solo se pudiese acceder a CrearLista<> desde la clase
Persona.



No sé si se me escapa algo más, pero creo que basta con declarar el
método de la clase base "protected" en lugar de "public". De esa forma solo
es accesible a las clases hijas.
Respuesta Responder a este mensaje
#4 ANT1
25/01/2007 - 12:37 | Informe spam
Gracias de nuevo. No conocia ese tipo, habia probado con private pero
claro ahi solo podia acceder entonces la clase base.

Como siempre Alberto me has ayudado muchisimo.

Gracias



On 25 ene, 12:23, "Alberto Poblacion"
wrote:
"ANT1" wrote in messagenews:

> me gustaria que solo se pudiese acceder a CrearLista<> desde la clase
> Persona. No sé si se me escapa algo más, pero creo que basta con declarar el
método de la clase base "protected" en lugar de "public". De esa forma solo
es accesible a las clases hijas.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida