문제

.cast <> 연산자를 사용하여 LINQ 엔티티 목록을 BusinessObject 목록으로 변환하는 InvalidCastException이 나타납니다. " 'Ticketing.ticket'유형의 대상을 캐스트 할 수 없음 'TITKING.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
    }
}
도움이 되었습니까?

해결책

나는 다음과 같은 기능을 가지고 갈 것입니다.

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));
    }
}

두 번째는 정확히 무슨 일이 일어나고 있는지에 대해 더 분명하다고 말하고 싶습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top