Comment étendre une Classe en C#?

J'ai mon propre Objet, et je tiens à le prolonger, l'enregistrement des données provenant d'une personne et l'ajout de nouvelles informations.

De sorte que le code serait:

public class Student : Person
{
    public string code { get; set; }
}

mais quand j'essaie d'init et ajouter la nouvelle valeur:

Person person = new Person("Paul", "Catch");
Student student = (Person)person;
student.code = "1234";

J'ai eu System.InvalidCastException: Unable to cast object of type 'MyLayer.Person' to type 'Student'.

Ai-je raté?

MODIFIER: peut-être que j'ai tort de mettre cette Personne de la classe. Vous devez supposer qu'il en devenir à partir d'une base comme objet, comme Person person = new MyPersons().First();

Donc je ne vais pas à remplir le nouveau avec des propriétés, un par un, juste étendre une propriété grâce à la nouvelle de l'objet qui s'étendent à l'ancien.

Nous montrer Person classe..
Veuillez afficher la définition de la classe Person.
Je ne peux pas! Il n'est pas "Personne" en fait, c'est une autre classe dans une DLL, mais ce n'est pas important?
person est explicitement exprimés comme Person alors implicitement convertie en Student (au Cours de la = affectation). Je crois que vous vouliez dire explicitement exprimés directement à Student
Un Student est un Person mais l'inverse n'est pas nécessairement vrai - une Person n'est pas toujours un Student. C'est pourquoi votre plâtre est un échec.

OriginalL'auteur markzzz | 2013-03-06