using System;
using System.Globalization;
using Developpez.Dotnet.Properties;
namespace Developpez.Dotnet
{
///
/// Fournit des méthodes pour travailler avec des nombres.
///
public static partial class Numbers
{
///
/// Tente de convertir une chaine de caractères vers le type spécifié.
///
/// Type de destination
/// Chaine à convertir
/// Un nombre du type spécifié si la conversion réussit; sinon, null.
public static T? TryParse(this string s) where T : struct
{
Delegate d;
if (_parsers.TryGetValue(typeof(T), out d))
{
var f = (Func) d;
return f(s);
}
throw new NotSupportedException(ExceptionMessages.OnlyNumericTypesAreSupported);
}
///
/// Tente de convertir une chaine de caractères vers le type spécifié.
///
/// Type de destination
/// Chaine à convertir
/// Une combinaison de valeurs indiquant le format autorisé de s.
/// qui fournit des informations de format propres à la culture concernant s.
/// Un nombre du type spécifié si la conversion réussit; sinon, null.
public static T? TryParse(this string s, NumberStyles style, IFormatProvider provider) where T : struct
{
Delegate d;
if (_parsersWithStyleAndProvider.TryGetValue(typeof(T), out d))
{
var f = (Func)d;
return f(s, style, provider);
}
throw new NotSupportedException(ExceptionMessages.OnlyNumericTypesAreSupported);
}
}
}