Casting string para o tipo genérico que é uma string

Estou escrevendo um método para fazer uma conversão de tipo inteligente - usando ToString () se o parâmetro type for uma string, caso contrário, lançando, mas retornando null se a conversão não funcionar. Basicamente, obtém tanta informação dev pode sem lançar uma exceção.

Eu verifico issoT é de fato umstring antes de tentar o elenco, mas o compilador ainda não é um fã:

Cannot convert type 'string' to 'T'

E aqui está o meu 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;
    }
}

Também deixe-me saber se isso é algum tipo de pecado imperdoável. Eu estou usando para lidar com algumas estruturas de dados que poderiam ter tipos mistos.

questionAnswers(4)

yourAnswerToTheQuestion