using System; using System.Collections; using static Tests.ExtensionMethods.ClassB; namespace Tests { class ExtensionMethods { public static int Remove(this String str, float val, float val2) { return 123; } class ClassA { public static void Test() { Test.Assert("Abc".Remove(1.2f, 2.3f) == 123); } } public class ClassB { public static int Flop(this String str, int a) { return a + 1000; } } [Test] public static void TestBasics() { ClassA.Test(); Test.Assert("Test".Flop(234) == 1234); List iList = scope .(); iList.Add(3); iList.Add(20); iList.Add(100); Test.Assert(iList.Total() == 123); float a = 1.2f; float b = 2.3f; Test.Assert(a.CompareIt(b) < 0); } } static { public static int CompareIt(this T self, T other) where bool : operator T < T where bool : operator T > T { if(self < other) return -1; else if(self > other) return 1; return 0; } public static T Total(this List list) where T : operator T + T { T total = default; for (let val in list) total += val; return total; } } }