List <TEntity>.Cast <BusinessObject>() завершается ошибкой, если существует неявное приведение - PullRequest
1 голос
/ 09 сентября 2009

Я получаю исключение InvalidCastException, преобразующее список сущностей linq в список бизнес-объектов с помощью оператора .Cast <>. "Невозможно привести объект типа Ticketing.ticket к типу 'Ticketing.ModelTicket'. "(Имя пространства имен было изменено, поскольку подчеркивание вызывало ненужное форматирование)

вот мой класс бизнес-объекта

public sealed class ModelTicket
{
public ModelTicket(ticket ticket)
    {
        _Ticket = ticket;
    }
public static implicit operator ModelTicket(ticket item)
    {
        return new ModelTicket(item);
    }
}

и вот мой метод расширения для преобразования списка объектов linq в список бизнес-объектов:

public static class ModelTicketExtensions
{
    public static List<ModelTicket> ToModelTickets(this List<ticket> list)
    {
        return list.Cast<ModelTicket>().ToList();// exception on cast
    }
}

1 Ответ

1 голос
/ 09 сентября 2009

Я бы пошел со следующей функцией:

public static class ModelTicketExtensions
{
    public static List<ModelTicket> ToModelTickets(this List<ticket> list)
    {
        return list.ConvertAll<ModelTicket>(t => (ModelTicket)t);
    }
}

Если это не сработает для вас, вы можете пойти по совершенно прямому маршруту:

public static class ModelTicketExtensions
{
    public static List<ModelTicket> ToModelTickets(this List<ticket> list)
    {
        return list.ConvertAll<ModelTicket>(t => new ModelTicket(t));
    }
}

Я бы сказал, что второй аргумент является более понятным, что именно происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...