C# Language Utiliser explicitement une méthode d'extension


Exemple

Les méthodes d'extension peuvent également être utilisées comme méthodes classiques de classe statique. Cette façon d'appeler une méthode d'extension est plus détaillée, mais elle est nécessaire dans certains cas.

static class StringExtensions
{
    public static string Shorten(this string text, int length) 
    {
        return text.Substring(0, length);
    }
}

Usage:

var newString = StringExtensions.Shorten("Hello World", 5);

Quand appeler les méthodes d'extension en tant que méthodes statiques

Il existe encore des scénarios où vous devez utiliser une méthode d'extension comme méthode statique:

  • Résoudre un conflit avec une méthode membre. Cela peut se produire si une nouvelle version d'une bibliothèque introduit une nouvelle méthode de membre avec la même signature. Dans ce cas, la méthode membre sera préférée par le compilateur.
  • Résoudre les conflits avec une autre méthode d'extension avec la même signature. Cela peut se produire si deux bibliothèques incluent des méthodes d'extension similaires et que les espaces de noms des deux classes avec des méthodes d'extension sont utilisés dans le même fichier.
  • Passer la méthode d'extension en tant que groupe de méthodes dans le paramètre délégué.
  • Faire votre propre liaison via Reflection .
  • En utilisant la méthode d'extension dans la fenêtre Immédiat dans Visual Studio.

En utilisant statique

Si une directive using static est utilisée pour amener les membres statiques d'une classe statique dans la portée globale, les méthodes d'extension sont ignorées. Exemple:

using static OurNamespace.StringExtensions; // refers to class in previous example

// OK: extension method syntax still works.
"Hello World".Shorten(5);
// OK: static method syntax still works.
OurNamespace.StringExtensions.Shorten("Hello World", 5);
// Compile time error: extension methods can't be called as static without specifying class.
Shorten("Hello World", 5);

Si vous supprimez le modificateur this du premier argument de la méthode Shorten , la dernière ligne sera compilée.