Tengo el siguiente código:función de conversión genérica para trabajar con GUID
public static T ParameterFetchValue<T>(string parameterKey)
{
Parameter result = null;
result = ParameterRepository.FetchParameter(parameterKey);
return (T)Convert.ChangeType(result.CurrentValue, typeof(T), CultureInfo.InvariantCulture);
}
El tipo de result.CurrentValue
es cadena. Me gustaría ser capaz de convertirlo en Guid pero aparece el error:
Invalid cast from System.String to System.Guid
Esto funciona perfectamente con los tipos de datos primitivos.
¿Hay alguna manera de hacer que esto funcione para tipos de datos no primitivos?
tener cuidado con el uso de ConvertFromInvariantString. Si su tipo es DateTime y tiene formatos de fecha internacionales, esto explotará. Acabo de rastrear un error realmente difícil de encontrar basado en esta respuesta. –
@DPeden de hecho, deben coincidir: mi uso aquí fue invariante asumiendo que los datos serializados generalmente deberían estar en un formato invariante –
Sí, acordó. Seguí votando tu respuesta, ya que es muy útil. Solo señalo este potencial para los demás, ya que me quemó. –