Estoy escribiendo un método para hacer una conversión de tipo inteligente - usando ToString() si el parámetro de tipo pasa a ser una cadena, de lo contrario lanzando pero devolviendo nulo si el molde no lo hace trabajo. Básicamente obtiene tanta información de v
que puede sin lanzar una excepción.Casting cadena de tipo genérico que es una cadena
puedo comprobar que el T
es de hecho un string
antes de intentar el reparto, pero el compilador todavía no es un fan:
Cannot convert type 'string' to 'T'
Y aquí es mi método:
public T? Convert<T>(object v)
{
if (typeof(T) == typeof(string)) {
return (T)v.ToString(); // Cannot convert type 'string' to 'T'
} else try {
return (T)v;
} catch (InvalidCastException) {
return null;
}
}
también quisiera saber si esto es algún tipo de pecado imperdonable. Lo estoy usando para tratar con algunas estructuras de datos que podrían tener tipos mixtos.
Hay otros problemas. Su método no puede tener el tipo de retorno 'T?' Cuando no hay restricción en 'T'. Por ejemplo, no hay nada llamado '¿cadena?' Porque la cadena es un tipo de referencia. –