良いですか? C#で一般的なVector4クラスを作成する方法はありますか? 私は、すべてが3d表現を必要とする2つのユニット(力、距離、モーメント、回転、加速、速度など)を持っており、それらはすべて非常に似たように振る舞い、したがって加算、乗算などの基本機能をサポートする必要があります。C#Generic Vector4クラスを作成していますか?
各クラスには、特殊なケースもいくつかあります。たとえば、force⨯distance= momentです。したがって、私はVector4<Force>
から継承しているForce3dを作成できるようにしたいので、これらすべての矢印を常に書く必要はなく、これらのforce-specific関数を構造体に追加する必要はありません。
私はVector4からすべてのユニットが継承されている継承ベースのアプローチを使用していますが、これはいくつかの問題を引き起こします。たとえば、Add(force1、force2)を呼び出すと、ベースクラスForce3dのだから私はいずれかの鋳造またはすべてのユニットのためのAdd関数のコピーを作成することになります。
私は(好ましくは不可能だ本当のオペレーター、と)など、追加掛けるためのすべての基本的な機能を再定義することなく、Vector4<double>
とVector4<Force>
の両方を作成できるようにしたいです。これはまた、いくつかの新しい問題を追加します。なぜなら、Forceを2倍から継承させることですが、すべての基本型が密閉されているため、コンテナクラスを作成しなければならず、代わりにここで数値の基本演算子を再定義する必要があります。
私は可能な限りすべてのアプローチを試みてきましたが、私はいつもあまりにも多くのものを再定義してしまいます。
理由をしてください? – Noldorin