web-dev-qa-db-ja.com

AutoMapper汎用マッピング

StackOverflowで検索してグーグル検索しましたが、これに関するヘルプや提案を見つけることができませんでした。

次のようなクラスでPagedListオブジェクトを作成し、AutoMappperを使用してソースから宛先にタイプをマップします

public class PagedList<TSrc, TDest>
{
    protected readonly List<TDest> _items = new List<TDest>();

    public IEnumerable<TDest> Items {
        get { return this._items; }
    }
}

このタイプのマップを作成して、次のような別のタイプに変換する必要があります

public class PagedListViewModel<TDest>
{
    public IEnumerable<TDest> Items { get; set; }
}

私は試しました

Mapper.CreateMap<PagedList<TSrc, TDest>, PagedListViewModel<TDest>>();

しかし、コンパイラはTSrcTDestのために文句を言う

なにか提案を?

18
Lorenzo

AutoMapper wiki によると:

public class Source<T> {
    public T Value { get; set; }
}

public class Destination<T> {
    public T Value { get; set; }
}

// Create the mapping
Mapper.CreateMap(typeof(Source<>), typeof(Destination<>));

あなたの場合、これは

Mapper.CreateMap(typeof(PagedList<,>), typeof(PagedListViewModel<>));
31
Jeroen Vannevel