Ce qui suit est conforme mais au moment de l'exécution déclenche une exception. Ce que j'essaye de faire est de lancer une classe PersonWithAge à une classe de Person. Comment est-ce que je fais ceci et quel est le travail autour?Cast/Convert IEnumerable <T> à 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: Par ailleurs PersonWithAge contiendra toujours les mêmes propriétés que personne plus un couple plus.
EDIT 2 Désolé les gars, mais j'aurais dû faire un peu plus clair, disons que j'ai deux vues db dans une base de données qui contient les mêmes colonnes, mais la vue 2 contient 1 champ supplémentaire. Mes entités de vue de modèle sont générées par un outil qui imite les vues de la base de données. J'ai une vue partielle MVC qui hérite de l'une des entités de classe mais j'ai plus d'un moyen de saisir des données ...
Je ne sais pas si cela aide, mais cela signifie que je ne peux pas faire en sorte que personWithAge hérite de la personne.
La manière choisie peut être la voie en avant, cependant je m'attendrais à une pénalité car ceci peut ne pas être un moyen maigre. – Rippo