Par Thierry Thoua,
mercredi, novembre 14 2007.
Lien permanent
.NET
C# 3.0 ajoute une nouvelle fonctionnalité très intéressante qui offre enfin la possibilité au développeur d'ajouter des nouvelles méthodes sur des classes du CLR. Il n'est plus obligé de réaliser une méthode statique ou on passe tel ou tel objet etc... Voici un petit exemple d'ajout de méthodes....
voici un exemple de code pour définir de nouvelles méthodes pour la classe System.Drawing.Size:
[csharp]
namespace System.Drawing
{
public static class ExtendMethods
{
public static System.Windows.Size ConvertToWpfSize(this Size drawingSize)
{
return new System.Windows.Size(drawingSize.Width, drawingSize.Height);
}
public static System.Windows.Size AddAndConvertToWpfSize(this Size drawingSize, Size addedSize)
{
return new System.Windows.Size(drawingSize.Width + addedSize.Width,
drawingSize.Height + addedSize.Height);
}
}
}
Voici un exemple de code .... utilisable dans n'importe quel programme:
[csharp]
System.Drawing.Size drawingSize = new System.Drawing.Size(10, 20);
System.Windows.Size size = drawingSize.ConvertToWpfSize();
System.Windows.Size addedSize = drawingSize.AddAndConvertToWpfSize(drawingSize);
Il y a cependant plusieurs limitations:
- Les méthodes doivent être définiées dans une classe statique non générique
- La méthod est elle-même définie en static
- Le premier paramètre contient le mot clé "this" pour spécifier sur quel objet la méthode va s'appliquer
- La méthode doit se trouver dans un namespace visible par le code ... Autrement, il ne pourra pas y accéder(Ainsi je conseille d'utilise le même namespace que l'objet de base ou l'on ajoute les méthodes)