AutoMapper通用映射

Lor*_*nzo 17 c# mapping 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; }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想为这种类型创建一个Map,它应该将它转换为另一种类型,如下所示

public class PagedListViewModel<TDest>
{
    public IEnumerable<TDest> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我试过了

Mapper.CreateMap<PagedList<TSrc, TDest>, PagedListViewModel<TDest>>();
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨因为TSrcTDest

有什么建议吗?

Jer*_*vel 30

根据AutoMapper维基:

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<>));
Run Code Online (Sandbox Code Playgroud)

在你的情况下,这将是

Mapper.CreateMap(typeof(PagedList<,>), typeof(PagedListViewModel<>));
Run Code Online (Sandbox Code Playgroud)

  • @Lorenzo:使用`typeof(PagedList <,>)`来表示多种泛型类型. (2认同)
  • CreateMap的这个重载不允许你在ForMember中使用表达式,你必须指定字符串名称...... (2认同)