Очень Типобезопасно! Концепция Расширенной Расширяемой Системы Модулей С Общей Математикой Для .Net.

Привет! Я хотел бы предложить концепцию системы единиц измерения с полной типобезопасностью, хорошей производительностью и полной расширяемостью! Для нетерпеливых: github .



Очень типобезопасно! Концепция расширенной расширяемой системы модулей с общей математикой для .
</p><p>
NET.

Пример работы Существует несколько существующих решений для ЭИ , Например, Юнитснет И Единицы измерения в F# .

Оба решения популярны и выполняют свою работу.

Но здесь мы сделаем полностью расширяемую систему.

Мы также хотим автоматического преобразования пользовательского интерфейса.

Итак, начнем.



Выполнение

Основной принцип заключается в том, что мы не делим единицы на физические величины.

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

Пользовательский интерфейс может иметь любой базовый интерфейс.

Для простоты я возьму SI в качестве базового пользовательского интерфейса.

Например, для километра базовой единицей будет метр (1000 метров в километре).

Для грамма – килограмма (0,001 кг на г).

Для метра базовой единицей также является метр (1:1).

Вот как выглядит интерфейс, реализованный каждым блоком:

  
   

public interface IBaseUnit<T, TNumber> { TNumber Base { get; } string Postfix { get; } }

База – количество базовой единицы в нашей.

Постфикс — это просто текстовый эквивалент. Например, минута определяется так:

public struct Minute<TNumber> : IBaseUnit<Second<TNumber>, TNumber>

Теги: #программирование #C++ #.

NET #F# #юниты #общая математика

Вместе с данным постом часто просматривают: