2017-09-22 8 views
-1

私は自分のジェネリックタイプ:PagedList<T>を持っています。これはページングの責任を負います。例えば、PagedList<User>をサービスに返して、PagedList<UserDTO>を返します。だから私は、マップしよう:
return _mapper.Map <PagedList<User>, PagedList<UserDTO>>(userList);を、これは私が得るものです:
Automapper ASP.NET COREのマッピングカスタムジェネリックタイプのエラー

ArgumentException: 
App.Core.Paging.PagedList`1[App.Infrastructure.DTO.UserDTO] needs to have a 
constructor with 0 args or only optional args. 
Parameter name: type 
lambda_method(Closure , PagedList<User> , PagedList<UserDTO> , 
ResolutionContext) 

AutoMapperMappingException: Error mapping types. 

そして、私のマッパーの設定で: cfg.CreateMap<User, UserDTO>();
これで十分か、私が行方不明です何かか?両方のクラスのプロパティは同じです。

+0

エラーはあなたに問題を伝えます、 'UserDTO'は利用可能なコンストラクタを持っていますか? – DavidG

+0

実際には、私は 'PagedList'を言っているはずです... – DavidG

+0

@DavidGああ、私はPagedList で空のコンストラクタを作って、それは私がUser/UserDTOで検索している間ずっと働いていました。ありがとう! – imaco

答えて

0

正確な問題を示すエラーメッセージが表示されます。PagedListクラスには、AutoMapperで使用できるコンストラクタが必要です。最も単純なオプションは、クラスに空のコンストラクタを追加することです。

public class PagedList<T> 
{ 
    //Add this: 
    public PagedList() { } 
} 

ただし、状況に応じて適切かどうかを判断する必要があります。

関連する問題