AutoMapper 2.2.1을 사용하여 다른 비즈니스 개체를 모델을 매핑하는 데 사용하고 있습니다. 이제 CustomList
(아래 코드 참조) 속성을 가진 개체를 매핑하려고하면 InvalidCastExceptions
이 표시됩니다. CustomList
은 IList
으로 캐스팅 할 수 없다는 예외가 있습니다. CustomList
이 IReadOnlyList
을 구현하고 IList
이 아니기 때문에 어느 쪽이 옳습니다.매핑시 MyType이 MyType에 매핑되는 동안 InvalidCastException이 발생했습니다.
automapper가 이런 방식으로 파일을 캐스팅하려고하는 이유와이를 해결하는 방법/해결 방법은 무엇입니까? 대부분 문제의 원인이되는 클래스가 IReadOnlyList에서 구현하는 데
public class MyViewModel : SomeModel { //... some addtional stuff ...}
public class SomeModel {
public CustomList DescriptionList { get; internal set; }
}
public class CustomList : ReadOnlyList<SomeOtherModel> {}
public abstract class ReadOnlyList<TModel> : IReadOnlyList<TModel> {}
//map it
//aList is type of SomeModel
var viewList = Mapper.Map<List<MyViewModel>>(aList);
'ReadOnlyList'로 인해 문제가 발생했습니다. 나는 너무 깨끗한 해결책으로 그것을 고쳤다. ViewModel 내부의 ReadOnlyList 멤버를'new'로 덮어 쓰고 숨 깁니다. 이런 식으로 리턴 타입을 변경하는 것은 깨끗해야합니다. – Andreas