Genéricos

08/02/2007 - 17:45 por Alhambra-Eidos Kiquenet | Informe spam
Hola a todos,

todavía no domino el tema de genéricos, quisiera saber si se puede pasar
este método utilizando genéricos

///<summary>A partir de cadena con valor de Enumeración obtiene el tipo
Enumerado</summary>
/// <param name="valorTipoObservacion"></param>
/// <returns></returns>
public static TipoObservacion ConvertirAValorEnum(string
valorTipoObservacion)
{
// Si es un valor no válido throws an ArgumentException.
// Para evitar esta situación, utilizar Enum.IsDefined()
// IsDefined no ofrece el parámetro ignoreCase, por lo que si no
se sabe si el valo es correcto en mayúsculas-minúsculas la única solución
sería utilizar método Parse y captura la excepción ArgumentException
-disminución del rendimiento

TipoObservacion tipoObs = null;

if (Enum.IsDefined(typeof(TipoObservacion), valorTipoObservacion))
tipoObs = (TipoObservacion)
Enum.Parse(typeof(TipoObservacion), valorTipoObservacion, true);

return tipoObs;
}

Quisiera que TipoObservacion fuese un Tipo que representase cualquier
enumeración.

Saludos y gracias de antemano.
http://www.alhambra-eidos.com/web2005/index.html
www.kiquenet.net

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
08/02/2007 - 18:38 | Informe spam
"Alhambra-Eidos Kiquenet"
wrote in message news:
Quisiera que TipoObservacion fuese un Tipo que representase cualquier
enumeración.



Quedaría de una forma parecida a la siguiente:

public static T ConvertirAValorEnum<T>(string valorT)
{
T tipo = default(T);

if (Enum.IsDefined(typeof(T), valorT))
tipo = (T) Enum.Parse(typeof(T), valorT, true);

return tipo;
}
Respuesta Responder a este mensaje
#2 Alhambra-Eidos Kiquenet
09/02/2007 - 08:17 | Informe spam
Hola,gracias Alberto.

Creo que había una forma de indicar que el tipo <T> es de tipo base
System.Enum, cuál esla sintaxis para indicarlo ?

saludos.

"Alberto Poblacion" wrote:
public static T ConvertirAValorEnum<T>(string valorT)
{
T tipo = default(T);

if (Enum.IsDefined(typeof(T), valorT))
tipo = (T) Enum.Parse(typeof(T), valorT, true);

return tipo;
}
Respuesta Responder a este mensaje
#3 Alberto Poblacion
09/02/2007 - 10:00 | Informe spam
"Alhambra-Eidos Kiquenet"
wrote in message news:
Creo que había una forma de indicar que el tipo <T> es de tipo base
System.Enum, cuál esla sintaxis para indicarlo ?



La sintaxis es esta:

public static T ConvertirAValorEnum<T>(string valorT) where T:clase
{
...
}

pero si en "clase" pones System.Enum el compilador se queja de que "La
restricción no puede ser la clase especial System.Enum".
Respuesta Responder a este mensaje
#4 Octavio Hernandez
09/02/2007 - 10:52 | Informe spam
Alberto,

Efectivamte, no se puede usar System.Enum... En algún sitio leí el por qué
de
esa limitación, pero no la recuerdo ahora...
Lo más cerca q se puede llegar es usando struct:

public static T ConvertirAValorEnum<T>(string valorT) where T:struct
{
//...
}

Slds - Octavio


"Alberto Poblacion"
escribió en el mensaje news:
"Alhambra-Eidos Kiquenet"
wrote in message
news:
Creo que había una forma de indicar que el tipo <T> es de tipo base
System.Enum, cuál esla sintaxis para indicarlo ?



La sintaxis es esta:

public static T ConvertirAValorEnum<T>(string valorT) where T:clase
{
...
}

pero si en "clase" pones System.Enum el compilador se queja de que "La
restricción no puede ser la clase especial System.Enum".


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