J'écris un programme C# qui effectue des calculs dans plusieurs systèmes de coordonnées, et des transformations entre eux. Pour éviter toute confusion, j'aimerais utiliser un type de valeur statique distinct pour chaque type de coordonnées :
struct FooSpaceCoords {
double x, y, z;
}
struct BarSpaceCoords {
double x, y, z;
}
Maintenant, une classe de matrice pratique et sûre serait bien. Mais ce qui suit ne peut pas fonctionner :
public class MatrixTransform<To, From> where To : struct, From : struct
{
.... some implementation that requires .x, .y and .z ....
}
Cela échoue car le compilateur ne peut pas savoir que To
y From
ont des membres .x
, .y
& .z
.
Je pourrais définir un IHaveXYZ
mais il me semble que cela entraînera de nombreuses opérations de boxe, ce qui va à l'encontre de l'esprit de l'ensemble du plan (et est moins efficace, si cela compte).
Existe-t-il un moyen simple de faire ce que je voulais à l'origine ?