#@ template language="C#" debug="true" hostSpecific="true" #>
<#@ Assembly Name="System.Core.dll" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Globalization" #>
<#@ output extension=".cs" #>
// Attention : ce fichier a été automatiquement généré par un
// template T4. Toute modification manuelle sera écrasée !!!
<#
var types = new[]
{
new { ShortName = "byte", Type = typeof(byte), TypicalStyle = "NumberStyles.Integer" },
new { ShortName = "sbyte", Type = typeof(sbyte), TypicalStyle = "NumberStyles.Integer" },
new { ShortName = "short", Type = typeof(short), TypicalStyle = "NumberStyles.Integer" },
new { ShortName = "ushort", Type = typeof(ushort), TypicalStyle = "NumberStyles.Integer" },
new { ShortName = "int", Type = typeof(int), TypicalStyle = "NumberStyles.Integer" },
new { ShortName = "uint", Type = typeof(uint), TypicalStyle = "NumberStyles.Integer" },
new { ShortName = "long", Type = typeof(long), TypicalStyle = "NumberStyles.Integer" },
new { ShortName = "ulong", Type = typeof(ulong), TypicalStyle = "NumberStyles.Integer" },
new { ShortName = "float", Type = typeof(float), TypicalStyle = "NumberStyles.Float combiné à NumberStyles.AllowThousands" },
new { ShortName = "double", Type = typeof(double), TypicalStyle = "NumberStyles.Float combiné à NumberStyles.AllowThousands" },
new { ShortName = "decimal", Type = typeof(decimal), TypicalStyle = "NumberStyles.Number" },
};
#>
using System;
using System.Collections.Generic;
using System.Globalization;
namespace Developpez.Dotnet
{
public static partial class Numbers
{
private static readonly Dictionary _parsers;
private static readonly Dictionary _parsersWithStyleAndProvider;
static Numbers()
{
_parsers = new Dictionary
{
<# foreach (var t in types) { #>
{ typeof(<#= t.ShortName #>), new Func?>(TryParse<#= t.Type.Name #>) },
<# } #>
};
_parsersWithStyleAndProvider = new Dictionary
{
<# foreach (var t in types) { #>
{ typeof(<#= t.ShortName #>), new Func?>(TryParse<#= t.Type.Name #>) },
<# } #>
};
}
<# foreach (var t in types) { #>
///
/// Tente de convertir une chaine de caractères en <#= t.Type.Name #>.
///
/// Chaine à convertir
/// La valeur <#= t.Type.Name #> si la conversion réussit; sinon, null.
public static <#= t.ShortName #>? TryParse<#= t.Type.Name #>(string s)
{
<#= t.ShortName #> value;
if (<#= t.ShortName #>.TryParse(s, out value))
return value;
return null;
}
///
/// Tente de convertir une chaine de caractères en <#= t.Type.Name #>.
///
/// Chaine à convertir
/// Une combinaison de valeurs NumberStyles indiquant le format autorisé de s. Une valeur typique à spécifier est <#= t.TypicalStyle #>.
/// qui fournit des informations de format propres à la culture concernant s.
/// La valeur <#= t.Type.Name #> si la conversion réussit; sinon, null.
public static <#= t.ShortName #>? TryParse<#= t.Type.Name #>(string s, NumberStyles style, IFormatProvider provider)
{
<#= t.ShortName #> value;
if (<#= t.ShortName #>.TryParse(s, style, provider, out value))
return value;
return null;
}
<# } #>
}
}