Есть ли хороший способ создания универсального класса Vector4 в C #?
У меня есть пара единиц (сила, расстояние, момент, вращение, ускорение, скорость и т. Д.), Которые все нуждаются в 3d-представлении, и все они ведут себя очень похоже и поэтому должны поддерживать основные функции для сложения, умножения и т. Д.
Каждый класс также содержит несколько особых случаев, например force fordistance = moment. Поэтому я хочу иметь возможность создавать Force3d, наследуемый от Vector4<Force>
, поэтому мне не нужно постоянно писать все эти стрелки и иметь возможность добавлять эти специфичные для силы функции в структуру.
Я использовал этот подход, основанный на наследовании, где каждый юнит наследует от Vector4, до сих пор, но это вызывает некоторые проблемы, потому что когда я, например, вызываю Add (force1, force2), я получаю базовый класс, Vector4, вместо Force3d. Так что я заканчиваю тем, что применяю или создаю копию Add-функции для каждого юнита.
Я хочу иметь возможность создавать как Vector4<double>
, так и Vector4<Force>
без необходимости переопределения всех основных функций для сложения, умножения и т. Д. (Предпочтительно с реальными операторами, что кажется невозможным). Это также добавляет некоторые новые проблемы, потому что лучшим решением было бы заставить Force наследовать от double, но так как все базовые типы запечатаны, мне нужно создать содержащиеся классы, и я в итоге переопределяю здесь базовые операторы для чисел.
Я пробовал каждый возможный подход, но всегда заканчивал тем, что переопределял слишком много вещей.