Pull to refresh

Comments 15

Версия VS играет значение? На какой версии можно попробовать?

Ну на VS 22 точно будет работать. Про VS 19 честно - не знаю, не пробовал.

Если что, есть dotnet CLI.

Я, когда делал подобное, реализовал операцию умножения для кратных приставок (кило, милли). Тогда объявляются классы базовых единиц измерения, а кратные записываются как
1 * k * m.

Кажется, используя это, можно добиться дженерик-переопределения для операторов (сам я ещё не пробовал эту фичу).

Нельзя. Проблема в том, что нам нужен дженерик оператор, а не оператор на дженериках. Т. е. что-то типа

static TNew operator +<TNew>(TOld a, TNew b)

Это приватная реализация, или как она там называется, а не дженерик оператор.

Я же говорю - нет. В твоем коде + все равно НЕ дженерик оператор. Интерфейс никак ни на что не влияет. Интерфейс нужен для того, чтобы уметь ограничить тип до того, у которого есть оператор. А мне нужен дженерик оператор. А его нет. Совсем нет.

UFO just landed and posted this here
UFO just landed and posted this here

Сработает, конечно. 1 час / 12 минут будет 0.08 час/мин :).

На самом деле еще нужен метод упрощения, который упрощал бы, например, деление единиц с одной базы до просто скалярного значения. Пока что при любой операции само выражение единицы измерения будет только нарастать.

UFO just landed and posted this here

Достаточно долго программирую на C# в Enterprise. Успел проникнутся идеей DDD о строгой типизацией бизнес-сущностей, и пытаюсь её использовать там, где это уместно. Но, сталкиваясь только с днями, рублями и квадратными метрами, как то вообще упустил из виду, что вокруг есть целый физический мир. И в нем есть единицы измерения, которые тоже можно типизировать. И не в контексте бизнес-требований, а просто сами по себе. А там и производные единицы, и действия над ними, и приведение одних к другим...

Огромное спасибо за статью! Хожу довольный как ребёнок, который узнал что-то новое)

Sign up to leave a comment.

Articles