Minor changes are by default collapsed in the page history.
No changes
The page does not exist yet.
Failed to load changes
Версия от на
Leave Collaboration
Are you sure you want to leave the realtime collaboration and continue editing alone? The changes you save while editing alone will lead to merge conflicts with the changes auto-saved by the realtime editing session.
Одно из возможных решений данной задачи стоится на DI + Generic. Мы можем объявить generic интерфейс, реализующий набор математических операций над указанным типом. Мы можем реализовать данный интерфейс для всех необходимых типов. При этом у нас не будет мест, в которых бы нужно было выполнять приведение типов. С помощью DI регистрируем необходимые реализации и в нужном месте резольвим необходимый. Причем можем так-же внедрить в конструктор к другим классам.
Минусы: - Необходимо реализовывать интерфейс под каждый тип, в том числе для стандартных. При этом мы можем определить кастомные операции для своих типов.
Плюсы: - Мы не выполняем приведение типов, не пытаемся самостоятельно определять реализацию в зависимости от типа. - Также мы теряем скорость выполнения на Expression Tree, по факту работая с нативными операциями через Generic. - В случае, если для указанного типа не будет зарегистрирован класс мат. операций, то мы получим ошибку при разрешении зависимостей.
Более подробный и профессиональный разбор данной темы:
Unsafe generic math in C#
https://habr.com/ru/post/480416/
Одно из возможных решений данной задачи стоится на DI + Generic.
Мы можем объявить generic интерфейс, реализующий набор математических операций над указанным типом.
Мы можем реализовать данный интерфейс для всех необходимых типов. При этом у нас не будет мест, в которых бы нужно было выполнять приведение типов.
С помощью DI регистрируем необходимые реализации и в нужном месте резольвим необходимый. Причем можем так-же внедрить в конструктор к другим классам.
Минусы:
- Необходимо реализовывать интерфейс под каждый тип, в том числе для стандартных. При этом мы можем определить кастомные операции для своих типов.
Плюсы:
- Мы не выполняем приведение типов, не пытаемся самостоятельно определять реализацию в зависимости от типа.
- Также мы теряем скорость выполнения на Expression Tree, по факту работая с нативными операциями через Generic.
- В случае, если для указанного типа не будет зарегистрирован класс мат. операций, то мы получим ошибку при разрешении зависимостей.
AdamWhiteHat / GenericArithmetic
https://github.com/AdamWhiteHat/GenericArithmetic