Extension Methods • Umožňují přidat metodu jakékoliv existující třídě. • Metoda je ve skutečnosti definována v jiné třídě. Pro programátora se ale tváří, jako by byla součástí třídy. • Může být definována pouze ve statické třídě. • Definuje se jako statická metoda (používá se ale jako instanční). • První parametr extension metody je instance třídy na níž se má metoda definovat. Před názvem tohoto parametru musí být slovíčko „this“.
Extension Methods class Point { public double X { get; set; } public double Y { get; set; } } static class Point. Extensions { public static double Distance(this Point p 1, Point p 2) { return Math. Sqrt(Math. Pow(p 1. X - p 2. X, 2) + Math. Pow(p 1. Y - p 2. Y, 2)); } } class Program { static void Main(string[] args) { Point p 1 = new Point() { X = 20, Y = 30 }; Point p 2 = new Point() { X = 10, Y = 15 }; Console. Write. Line(p 1. Distance(p 2)); } }