|
Возник интересный вопрос по C#. Почему нельзя создавать статические extension методы? Столкнулся с этим в такой ситуации: в .NET есть стандартный класс Math у которого есть некие статические методы вроде Sin, Log, Sqrt и так далее. Я хочу дополнить эту коллекцию методов своими, например VectorLength(float x, float y), но при этом я хочу, чтобы вызывать его можно было так же как и все остальные, то есть var len = Math.VectorLength(vx, vy). Очевидный вариант реализовать подобные методы по месту назначения, вроде в самом классе Vector2 или Vector3 (как это обычно и делают в графических движках) мне не подходит, так как самих по себе векторов у меня нет и они не понадобятся. Нужно лишь проводить пару векторных операций, не более того. Пошарившись по форумам, ничего толкового не нашёл, зато понял что не один такой. Так вот интересно, почему для extension метода обязателен instance объекта, почему нельзя расширять сам класс?
|