Implémenter et utiliser des méthodes d’extension en C#

Parfois nous avons besoin d’effectuer des opérations non disponibles pour un type donné (string , int , List etc) et si nous savons que nous allons utiliser cette opération un grand nombre de fois , nous pouvons en faire une méthode d’extension.

Imaginons que je veuille savoir si un entier est plus grand qu’un autre , au lieu de faire :

var i = 10;
var result = false;
if (i > 100)
{
     result = true;
}
else
{
     result = false;
}

Je pourrais créer une méthode d’extension qui fait cela à ma place :

namespace ExtensionMethods.Sample
{
    public static class IntExtensions
    {
        public static bool IsGreaterThan(this int i, int value)
        {
            return i > value;
        }
    }
}

Et l’utiliser comme celà :

var i = 10;

var result = i.IsGreaterThan(100);

Tout celà est utilisable pour tous les types bien sur et vous sera bien utile lorsque ce que vous souhaitez faire n’est implémenté pour le type utilisé.

On peut utiliser tout cela sur une classe que nous venons de créer.

Prenons une classe Person : (J’ai rajouté un record aussi pour tester)

public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }

    }

    public record PersonRecord (string Firsname , string LastName , int Age );

Nous pouvons créer une extension qui renverra le nom et prénom via une extension :

  public static class ClassExtensioncs
    {
        public static string SayMyName(this Person p)
        {
            return  $"My name is: {p.FirstName} {p.LastName}";
        }
    }

Et cela fonctionne aussi sur les records :

 public static string SayMyName(this PersonRecord p)
        {
            return $"My name is: {p.FirstName} {p.LastName}";
        }

Au final si on teste tout celà dans une application console :

//int extension
var i = 10;
var result = i.IsGreaterThan(100);
Console.WriteLine(result);
//person class extension
var person = new Person { Age = 30, FirstName = "John", LastName = "Doe" };
Console.WriteLine(person.SayMyName());

//record extension 
var personrecord = new PersonRecord("John", "Doe", 30);  
Console.WriteLine(personrecord.SayMyName());

Voila vous en savez maintenant un peu plus sur les méthodes d’extension en C# qui vous seront bien utiles dans vos futurs développements 😎

Have fun coding !!