Ce l'Abbiamo fatta!

Ho scritto la classe Face in questo modo:

codice:
public class Face
        {
            public int[] nodes;
            public Face()
            {
                nodes = new int[4];
                nodes[0] = 0;
                nodes[1] = 1;
                nodes[2] = 2;
                nodes[3] = 3;
            }
        }

quindi scrivo le due classìi FaceT e FaceH con i loro costruttori ma SENZA campi: questi li faccio ereditare da Face


codice:
       public class FaceT : Face
        {
            public FaceT()
            {
                nodes = new int[4];
                nodes[0] = 0;
                nodes[1] = 2;
                nodes[2] = 4;
                nodes[3] = 6;
            }
        }

        public class FaceH : Face
        {
            public FaceH()
            {
                nodes = new int[4];
                nodes[0] = 1;
                nodes[1] = 3;
                nodes[2] = 5;
                nodes[3] = 7;
        
            }
        }
infine il metodo generico

codice:
         public static int Sum<T>(T face) where T : Face
        {
            int sum = 0;
            for (int i = 0; i < 4; i++)
                sum += face.nodes[i];
            return sum;
        }
ed ottengo (giustamente)


int Sum<FaceT>(FaceT face) = 12
int Sum<FaceH>(FaceH face) = 16

Grazie a tutti.