Astuces DotNet (Sébastien Courtois)

05/03/2009

Ajouter des fonctionnalités à des classes du Framework .NET (ou des classes .NET dont vous n’avez pas le code source)

Filed under: .NET, Débutant — Étiquettes : , , , , , — sebastiencourtois @ 16:59

Au cours de projet, vous pouvez être amené à avoir besoin d’ajouter des fonctionnalités à une classe du Framework .NET. Lorsque vous n’avez pas le code source de la classe en question, .NET vous propose trois manières simples d’étendre les fonctionnalités d’une classe.

La méthode passe partout : L’héritage

L’héritage est la méthode classique. Utilisable dans tous les langages objet, ce principe permet de redéfinir une classe en créant une autre classe plus spécifique reprenant les fonctionnalités de la classe générale.

En C#, cela se fait en utilisant le caractère ‘:’.

public class A {}
public class C : A {}

Dans l’exemple ci-dessus, la classe C dérive de A. Ainsi toute ce qui est défini en public ou protected dans A sera utilisable dans C. En plus, C pourra définir de nouvelles propriétés/méthodes.

Même si l’héritage reste le meilleur moyen pour ajouter des fonctionnalités, il y a un cas (au moins) dans lesquels on ne peut pas l’utiliser :

  • La classe mère est scellé (mot clé sealed). Impossible de faire de l’héritage.

Dans ce cas, le Framework .NET 2.0 nous fourni une solution : La partialité.

La méthode .NET 2.0 : Partialité

Le principe de la partialité est de reprendre une classe en ajoutant, dans un autre fichier source, des propriétés et des méthodes à la classe.

Pour cela on utilise le mot clé partial.

(Remarque : les classes partielles doivent être dans le même namespace)

Fichier A.cs : public sealed class A {}

Fichier A2.cs : public partial class A {}

La partialité n’étant pas de l’héritage, vous n’avez pas de problème avec le mot clé sealed. L’avantage de cette méthode est que votre code source référencera toujours la classe A quelque soit le nombre de fonctionnalités que vous aurez ajoutées  (avec l’héritage, vous auriez du remplacer toutes les occurrences de la classe A par B).

La partialité est notamment très utilisé dans Visual Studio pour les Winforms / WPF (séparation du code métier/ code interface).

La méthode .NET 3.5 : Les méthodes d’extensions

Cette dernière méthode a été introduite avec le Framework .NET 3.5. Le principe est de créer des méthodes pour une classe qui vont s’ajouter à celle-ci. Ces nouvelles méthodes seront placées dans une classe utilitaire statique (namespace/nom de classe différents de la classe visée). Le choix de la classe à étendre se fera dans le premier paramètres de la méthode précédé du mot clé this. Les méthodes d’extensions sont toujours statiques.

Blog4-1 On peut ensuite l’utiliser de façon très simple :

Blog4-2 Vous pouvez noter que l’IntelliSense fournit un icône particulier pour les méthodes d’extensions. De plus, vous pouvez voir le commentaire (extension) dans le Tooltip.

Les méthodes d’extensions sont une des bases de LINQ.

Laisser un commentaire »

Aucun commentaire pour l’instant.

RSS feed for comments on this post. TrackBack URI

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Créez un site Web ou un blog gratuitement sur WordPress.com.

%d blogueurs aiment cette page :