Je le code suivant:fonction de conversion générique ne semble pas fonctionner avec Guids
public static T ParameterFetchValue<T>(string parameterKey)
{
Parameter result = null;
result = ParameterRepository.FetchParameter(parameterKey);
return (T)Convert.ChangeType(result.CurrentValue, typeof(T), CultureInfo.InvariantCulture);
}
Le type de result.CurrentValue
est une chaîne. Je voudrais être en mesure de le convertir en Guid mais je continue à obtenir l'erreur:
Invalid cast from System.String to System.Guid
Cela fonctionne parfaitement avec les types de données primitifs.
Est-il possible de faire ce travail pour pour les types de données non-primitifs?
Soyez prudent avec l'utilisation ConvertFromInvariantString. Si votre type est un DateTime et que vous avez des formats de date internationaux, cela va exploser. Je viens de retrouver un bug très difficile à trouver basé sur cette réponse. –
@DPeden en effet, ils doivent correspondre - mon utilisation ici utilisait invariant dans l'hypothèse que les données sérialisées devraient généralement être dans un format invariable –
Oui, d'accord. J'ai toujours voté pour votre réponse car c'est très utile. Juste en soulignant ce potentiel obtenu pour les autres comme il m'a brûlé. –