Lo siguiente cumple, pero en tiempo de ejecución arroja una excepción. Lo que intento hacer es lanzar una clase PersonWithAge a una clase de Persona. ¿Cómo hago esto y cuál es el trabajo?Fundir/Convertir IEnumerable <T> en IEnumerable <U>?
class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
class PersonWithAge
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
IEnumerable<PersonWithAge> pwa = new List<PersonWithAge>
{
new PersonWithAge {Id = 1, Name = "name1", Age = 23},
new PersonWithAge {Id = 2, Name = "name2", Age = 32}
};
IEnumerable<Person> p = pwa.Cast<Person>();
foreach (var i in p)
{
Console.WriteLine(i.Name);
}
}
}
EDIT: Por cierto PersonWithAge siempre contendrá las mismas propiedades que la persona además de un par más.
EDIT 2 Lo siento muchachos, pero debería haber dejado esto un poco más claro, decir que tengo dos vistas db en una base de datos que contiene las mismas columnas pero la vista 2 contiene 1 campo adicional. Mis entidades de vista de modelo son generadas por una herramienta que imita las vistas de la base de datos. Tengo una vista parcial de MVC que hereda de una de las entidades de clase pero tengo más de una forma de capturar datos ...
No estoy seguro si esto ayuda, pero significa que no puedo hacer que personWithAge herede de persona.
La forma de selección puede ser el camino a seguir, sin embargo, esperaría una penalización, ya que puede no ser una manera delgada. – Rippo