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)