DotnetDojo

Développer des applications modernes avec les technologies Microsoft et Open source

  • Blog
  • Vidéos
  • Formations
  • Outils

Les 5 méthodes d’extension que vous devez connaitre

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 null
public 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ères
public 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éfaut
public 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 liste
public 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…
}

[/csharp]

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.

[ninja-inline id=3695]

Besoin de résultats rapides ?

Découvrez les formations vidéos que je propose :

  

 

Formations en présentiel (dans toute la France)

Découvrez également les formations C# et .NET que je donne en présentiel (en France)

A propos de DotnetDojo

Pascal Lacroix

Je m’appelle Pascal et je suis passionné par le développement logiciel, l’efficacité et l’entrepreneuriat. Sur DotnetDojo, je vous propose des méthodes pour apprendre à développer des applications modernes avec les technologies Microsoft et Open Source.

En savoir plus

Liens complémentaires

  • A propos de DotnetDojo
  • 18 principes pour professionnaliser le développement logiciel
  • Boite à outils du développeur
  • Tous les articles
  • Liste des formations
  • Contact

Copyright 2019 Jupiteo · Mentions légales · Contact · CGV · Offres d'emploi .NET · Formations Dotnet