목록 .cast ()가 암시 적 캐스트가있을 때 실패합니다.
-
05-07-2019 - |
문제
.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));
}
}
두 번째는 정확히 무슨 일이 일어나고 있는지에 대해 더 분명하다고 말하고 싶습니다.
제휴하지 않습니다 StackOverflow