AutoMapper使用操作来填充目标

时间:2011-02-15 13:29:00

标签: automapper

我需要使用源对象上的公共方法将目标对象的列表映射到源。

e.g。

public class Destination
{
    private IList<int> List = new List<int>();
    public void Add(int i) { List.Add(i); }
}

public class Source
{
    public int[] List { get; set; }
}

所以在伪伪语言中,映射应该是: Source.List中的Mapper.CreateMap foreach项,调用Source.Add(item)

可以这样做吗?

2 个答案:

答案 0 :(得分:5)

是。使用ConvertUsing语法:

Mapper.CreateMap<Source, Destination>()
    .ConvertUsing(s =>
                    {
                        var d = new Destination();
                        foreach(var i in s.List)
                        {
                            d.Add(i);
                        }
                        return d;
                    });

答案 1 :(得分:0)

我不这么认为。

AutoMapper自定义类型转换器仅接受来源并返回目的地。

但是,为什么不直接实现从int []到Destination的隐式类型转换? http://www.csharphelp.com/2006/10/type-conversion-and-conversion-operators-in-c/