私の測量アプリケーションには、1Dベクトルタイプの行列に適した操作を公開するクラスMatrixから継承するクラスVectorがあります。おそらく、基になる配列が1次元でなくても、誰かが行列をベクトルにダウンキャストしようとします。その後、Vector操作の1つで例外が発生するまで、問題があることを認識しません。しかし、キャストを実装しようとすると、つまり:
public static explicit operator Vector3(Matrix m)
{
if (m.Array.GetLength(0) != 3 && m.Array.GetLength(1) != 1)
throw new InvalidCastException("The matrix dimensions are invalid.");
return new Vector3(m[0, 0], m[1, 0], m[2, 0]);
}
タイトルの例外があります。それを回避する方法はありますか?