No dejes de compartir nuestro sitio y códigos en tus redes sociales, ayúdanos a aumentar nuestra comunidad.
Solución:
Deberías poder usar Convert.ChangeType()
en lugar de su código personalizado:
public T Get(Stats type) where T : IConvertible
return (T) Convert.ChangeType(PlayerStats[type], typeof(T));
Cada vez que te encuentres cambiando un tipo en un genérico casi seguro que estas haciendo algo mal. Los genéricos deben ser genérico; deberían funcionar de forma idéntica totalmente independiente del tipo.
Si T solo puede ser int o string entonces no escriba su código de esta manera en primer lugar. Escriba dos métodos, uno que devuelva un int y otro que devuelva un string.
public T Get(Stats type ) where T : IConvertible
if (typeof(T) == typeof(int))
int t = Convert.ToInt16(PlayerStats[type]);
return (T)t;
if (typeof(T) == typeof(string))
string t = PlayerStats[type].ToString();
return (T)t;
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)