Elenco < TEntity > .Cast < BusinessObject > () non riesce quando esiste un cast implicito
-
05-07-2019 - |
Domanda
Ricevo una InvalidCastException che converte un elenco di entità linq in un elenco businessobject usando .Cast < > operatore. " Impossibile trasmettere l'oggetto di tipo "Ticketing.ticket" da digitare . 'Ticketing.ModelTicket' " (il nome dello spazio dei nomi è stato modificato perché la sottolineatura causava una formattazione non necessaria)
ecco la mia classe di oggetti business
public sealed class ModelTicket
{
public ModelTicket(ticket ticket)
{
_Ticket = ticket;
}
public static implicit operator ModelTicket(ticket item)
{
return new ModelTicket(item);
}
}
ed ecco il mio metodo di estensione per convertire un elenco di oggetti linq in un elenco di oggetti business:
public static class ModelTicketExtensions
{
public static List<ModelTicket> ToModelTickets(this List<ticket> list)
{
return list.Cast<ModelTicket>().ToList();// exception on cast
}
}
Soluzione
Vorrei andare con la seguente funzione:
public static class ModelTicketExtensions
{
public static List<ModelTicket> ToModelTickets(this List<ticket> list)
{
return list.ConvertAll<ModelTicket>(t => (ModelTicket)t);
}
}
Se non funziona per te, puoi seguire il percorso completamente diretto:
public static class ModelTicketExtensions
{
public static List<ModelTicket> ToModelTickets(this List<ticket> list)
{
return list.ConvertAll<ModelTicket>(t => new ModelTicket(t));
}
}
Direi che il secondo è discutibile più chiaramente su ciò che sta accadendo.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow