API для работы с векторами и пр. на C#
От: okon  
Дата: 29.04.19 06:48
Оценка:
С одной стороны хочется сделать гибко выбор типа, кому-то удобнее float, double, кому-то int,
например

public class Vector2D<T>  
{
    public T X {get;}
    public T Y {get;}
}


public class Vector3D<T>  
{
    public T X {get;}
    public T Y {get;}
    public T Z {get;}
}



С другой получается ограничение языка, мы не можем указать например where T : double, float, int или operator+, operator-.
также не можем один раз написать правило сложения, например operator+= { a.x + b.x, a.y + b.y },

Т.е. делая такое API нужно
1. делать свои типы базовый Number, и его наследники FloatNumber,DoubleNumber и т.д. ...
2. делать отдельную логику для каждого типа, дублируя операции +, — и т.д., либо генерить ее автоматически через T4

Есть ли какие-то хорошие примеры удобного API решающего проблему выбора типа данных для координат ?
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.