Je ne comprends pas pourquoi le cadre expose AppSettingsReader.GetValue, qui est la signature:Quel est le point dans lequel AppSettingsReader demande le type de la valeur et renvoie un objet de type non spécifique?
public object GetValue(string key, Type type);
demande pour le type de la valeur de réglage, et retourne un non casté object
?! À quoi bon demander le type et ne pas exposer une valeur castée générique?!
Je me demande pourquoi ils n'ont pas "terminer" le travail.
Si nous parlons déjà de finir le travail, peut-être ce qui suit devrait être ce que nous voulons:
public T GetValue<T>(string key, T defaultValue = default(T)) where T : class
{
object value = _appSettingsReader.GetValue(key, typeof(T));
T castedValue;
try
{
castedValue = (T) Convert.ChangeType(value, typeof(T));
}
catch (Exception)
{
castedValue = defaultValue;
}
return castedValue;
}
Le '... comme T' pourrait simplement être' (T) ... '. –
Je sais ... Je pense personnellement que cela rend l'intention plus claire. Mais c'est maintenant difficile ... :) – Veverke
@PatrickHofman: vous avez fait un bon point. Il y a une différence entre les deux, et c'est exactement ce que je cherchais (sur un problème différent). Lancer avec "as" nécessite que le type générique soit une classe, tout en utilisant (T) non. En d'autres termes, l'utilisation de "as" dans la solution signifiait qu'elle excluait les types de structure, tels que le double. Donc, la solution n'était pas aussi générique que je le voulais. – Veverke