Практически каждый раз, когда я работаю с графическими приложениями, я обнаруживал, что мне приходится применять алгоритм, который я написал в прошлом или нашел в сети, который концептуально идеально соответствует тому, что мне нужно, но отличается от структур данных. Например, у меня иногда может быть «Точка», выраженная как Vector2
или как PointF
, Point
и так далее. Повторное использование такого кода в различных проектах вынуждает иногда добавлять нежелательные ссылки и всегда делать скучное преобразование из-в типы данных, поэтому мы неожиданно переписываем алгоритм для новой структуры данных. Итак, вопрос: есть ли (умный) способ абстрагирования средства доступа Point в алгоритме? Я думаю предоставить что-то вроде кортежа:
Func<TCoord,TPoint> Xaccessor
Func<TCoord,TPoint> Yaccessor
...
Func<TCoord,TPoint> ...accessor
но я должен сделать то же самое для установки значений координат, поэтому я заканчиваю таким беспорядком, что никто или не хочет использовать мою реализацию алгоритма. Как кратко указать точку доступа координат? Кроме того, мы также должны учитывать, что иногда точка может быть выражена с помощью float []. Я полагаю, что что-то можно сделать с помощью деревьев выражений, но я не проворен в этом вопросе, поэтому любой совет будет очень признателен!
Большое спасибо
РЕДАКТИРОВАТЬ Реализация интерфейса не является опцией, поскольку классы точек не написаны мной, а отражение не является опцией по соображениям производительности.