Poniższe jest zgodne, ale w czasie wykonywania zgłasza wyjątek. Próbuję rzucić klasę PersonWithAge na klasę Person. Jak to zrobić i na czym polega praca?Przesyłaj/przeliczaj IEnumerable <T> na 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: Przy okazji PersonWithAge zawsze zawierają te same właściwości jak osoby plus kilka innych.
EDIT 2 Sorry chłopaki ale powinien zrobiłem to nieco wyraźniej, że mam dwa db widoki w bazie danych, która zawiera te same kolumny, ale widok 2 zawiera 1 dodatkowe pole. Moje jednostki widoku modelu generowane są przez narzędzie, które naśladuje widoki bazy danych. Mam częściowy widok MVC, który dziedziczy po jednej z encji klasowych, ale mam więcej niż jeden sposób przechwytywania danych ...
Nie jestem pewien, czy to pomaga, ale oznacza to, że nie mogę sprawić, by osobaWithAge dziedziczyła od osoby.
Wybrana droga może być drogą do przodu, jednak oczekiwałbym kary, ponieważ nie musi to być droga szczupła. – Rippo