The following complies but at run time throws an exception. What I am trying to do is to cast a class PersonWithAge to a class of Person. How do I do this and what is the wo
You can't just cast two unrelated type into each other. You could make it possible to convert PersonWithAge to Person by letting PersonWithAge inherit from Person. Since PersonWithAge is obviously a special case of a Person, this makes plenty of sense:
class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
class PersonWithAge : Person
{
// Id and Name are inherited from Person
public int Age { get; set; }
}
Now if you have an IEnumerable named personsWithAge, then personsWithAge.Cast will work.
In VS 2010 you will even be able to skip the cast altogether and do (IEnumerable, since IEnumerable is covariant in .NET 4.