Je vous propose de découvrir les méthodes d’extensions que j’utilise le plus souvent et qui pourront très certainement vous servir pour gagner en efficacité au quotidien.
IsNull
[csharp] // Permet de vérifier si un objet est nullpublic static bool IsNull(this object source)
{
return source == null;
}
[/csharp]
Cette extention peut s’utiliser comme ceci :
[csharp] void Main(){
if (obj.IsNull())
{
// traiter le cas null
}
}
[/csharp]
FormatWith
[csharp] // Permet de formater une chaine de caractèrespublic static string FormatWith(this string format,
params object[] args)
{
return string.Format(format, args);
}
[/csharp]
Cette extension peut être utilisée comme ceci :
[csharp] var resultat = "Ceci est le résultat: A={0}, B={1}".FormatWith(a, b);[/csharp]
ToInt / ToDouble
[csharp] // Convertir une string en int avec valeur par défautpublic static int ToInteger(this string value,
int defaultvalue)
{
return (int)ToDouble(value, defaultvalue);
}
// Convertir en int (valeur par défaut = 0)
public static int ToInteger(this string value)
{
return ToInteger(value, 0);
}
// Convertir en double
public static double ToDouble(this string value)
{
return ToDouble(value, 0);
}
// Convertir en double avec valeur par défaut
public static double ToDouble(this string value,
double defaultvalue)
{
double result;
if (double.TryParse(value, out result))
{
return result;
}
else
return defaultvalue;
}
[/csharp]
Vous pourrez utiliser ces extensions comme ceci :
[csharp] int valeur = "1233".ToInteger();// appel avec une valeur par défaut
double autre = "3.14".ToDouble(1.0);
[/csharp]
In
[csharp] // Vérifier si un élement est contenu dans une listepublic static bool In<T>(this T source, params T[] list)
{
if (null==source) throw new ArgumentNullException("source");
return list.Contains(source);
}
[/csharp]
Cette méthode bien pratique pourra être utilisé pour remplacer ce code :
[csharp] if(reallyLongIntegerVariableName == 1 ||reallyLongIntegerVariableName == 6 ||
reallyLongIntegerVariableName == 9 ||
reallyLongIntegerVariableName == 11)
{
// faire quelque chose…
}
if(reallyLongStringVariableName == "string1" ||
reallyLongStringVariableName == "string2" ||
reallyLongStringVariableName == "string3")
{
// faire quelque chose…
}
if(reallyLongMethodParameterName == SomeEnum.Value1 ||
reallyLongMethodParameterName == SomeEnum.Value2 ||
reallyLongMethodParameterName == SomeEnum.Value3 ||
reallyLongMethodParameterName == SomeEnum.Value4)
{
// faire quelque chose…
}
Par celui-ci (plus simple et plus lisible) :
[csharp] if(reallyLongIntegerVariableName.In(1,6,9,11)){
// faire quelque chose…
}
if(reallyLongStringVariableName.In("string1","string2","string3"))
{
// faire quelque chose…
}
if(reallyLongMethodParameterName.In(SomeEnum.Value1, SomeEnum.Value2, SomeEnum.Value3, SomeEnum.Value4)
{
// faire quelque chose…
}
[/csharp]
Pour aller plus loin
Il existe un projet sur CodePlex qui regroupe une grande quantité de méthode d’extensions prêtes à être utilisées, je vous invite donc à le télécharger et à l’utiliser pour faciliter votre quotidien: Extension overflow.