Création d'une liste générique des objets en C#

Par la voie de l'intro, je suis en création d'un Quadtree moteur à des fins personnelles à des fins de formation. Je suis désireux de ce moteur pour avoir la capacité de travailler avec de nombreux différents types de formes (au moment où je vais avec des cercles et des carrés) qui vont tous se déplacer dans une fenêtre et effectuer une action lors de la collision se produit.

Voici mes objets de forme que j'ai jusqu'à présent:

public class QShape {
    public int x { get; set; }
    public int y { get; set; }
    public string colour { get; set; }
}

public class QCircle : QShape {
    public int radius;
    public QCircle(int theRadius, int theX, int theY, string theColour) {
        this.radius = theRadius;
        this.x = theX;
        this.y = theY;
        this.colour = theColour;
    }
}

public class QSquare : QShape {
    public int sideLength;
    public QSquare(int theSideLength, int theX, int theY, string theColour) {
        this.sideLength = theSideLength;
        this.x = theX;
        this.y = theY;
        this.colour = theColour;
    }
}

Maintenant, ma question est, comment puis-je créer une liste générique (List<T> QObjectList = new List<T>();) en C# donc je peux avoir une liste contenant toutes ces formes diverses qui peuvent avoir des propriétés différentes (par exemple, QCircle a le "rayon" de la propriété, tandis que QSquare a la "sideLength de la propriété")? Un exemple de mise en œuvre serait utile.

Je sais juste qu'il est bêtement évident de répondre à cette question, mais j'apprécierais toute aide de toute façon. Je suis en train de revenir en C#; il a évidemment été un moment...

Liste<QShape> ??
Une telle liste, on retrouve les classes qui héritent de QShape? Si oui, j'ai été à droite; la réponse est bêtement évident.
Oui, il le ferait. Mais vous ne pourrez accéder à la QShape propriétés à moins de vous jeter des objets individuels.
Pourrais-je obtenir que dans le formulaire de réponse, y compris un exemple de comment vous pouvez mettre en œuvre que (c'est à dire, comment vous pouvez accéder à QCircle et QSquare propriétés spécifiques de la Liste<QShape>)?
Vous ne pouvez pas. Je ne sais pas pourquoi son commentaire est upvoted. Vous avez clairement l'état que vous souhaitez accéder aux différentes propriétés qui ne sont pas contenues dans le parent de la classe à l'aide de la classe de base comme le type ne fonctionnera pas.

OriginalL'auteur Djentleman | 2012-07-06