Изменения документа MathOperationsWithGeneric

Редактировал(а) Alexandr Fokin 2024/05/25 10:32

От версии 1.1
отредактировано Alexandr Fokin
на 2020/08/19 10:23
Изменить комментарий: К данной версии нет комментариев
К версии 3.4
отредактировано Alexandr Fokin
на 2020/08/24 15:02
Изменить комментарий: Редактировать комментарий

Сводка

Подробности

Свойства страницы
Содержимое
... ... @@ -3,3 +3,4 @@
3 3  https://git.denhome.ru/Repository/Detail/6e0c75c1-a619-4785-8b2d-d5eebd022ebc
4 4  
5 5  Пример показывающий возможность применять арифметические операции над T элементами Generic<T> классов.
6 +
XWiki.XWikiComments[0]
Автор
... ... @@ -1,0 +1,1 @@
1 +XWiki.cccc1808
Комментарий
... ... @@ -1,0 +1,3 @@
1 +Более подробный и профессиональный разбор данной темы:
2 +Unsafe generic math in C#
3 +https://habr.com/ru/post/480416/
Дата
... ... @@ -1,0 +1,1 @@
1 +2020-08-19 10:24:15.957
XWiki.XWikiComments[1]
Автор
... ... @@ -1,0 +1,1 @@
1 +XWiki.cccc1808
Комментарий
... ... @@ -1,0 +1,12 @@
1 +Одно из возможных решений данной задачи стоится на DI + Generic.
2 +Мы можем объявить generic интерфейс, реализующий набор математических операций над указанным типом.
3 +Мы можем реализовать данный интерфейс для всех необходимых типов. При этом у нас не будет мест, в которых бы нужно было выполнять приведение типов.
4 +С помощью DI регистрируем необходимые реализации и в нужном месте резольвим необходимый. Причем можем так-же внедрить в конструктор к другим классам.
5 +
6 +Минусы:
7 +- Необходимо реализовывать интерфейс под каждый тип, в том числе для стандартных. При этом мы можем определить кастомные операции для своих типов.
8 +
9 +Плюсы:
10 +- Мы не выполняем приведение типов, не пытаемся самостоятельно определять реализацию в зависимости от типа.
11 +- Также мы теряем скорость выполнения на Expression Tree, по факту работая с нативными операциями через Generic.
12 +- В случае, если для указанного типа не будет зарегистрирован класс мат. операций, то мы получим ошибку при разрешении зависимостей.
Дата
... ... @@ -1,0 +1,1 @@
1 +2020-08-24 14:58:09.297