Saltar al contenido

No se puede convertir implícitamente el tipo ‘Int’ a ‘T’

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *