AutoMapper использует операцию для заполнения места назначения - PullRequest
2 голосов
/ 15 февраля 2011

Мне нужно отобразить список из целевого объекта в исходный, используя открытый метод для исходного объекта.

например,

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; }
}

Таким образом, в псевдо-псевдо-языке отображение должно быть: Mapper.CreateMap foreach item в Source.List, вызывать Source.Add (item)

Можно ли это сделать?

Ответы [ 2 ]

5 голосов
/ 16 февраля 2011

Да. Используйте синтаксис ConvertUsing:

Mapper.CreateMap<Source, Destination>()
    .ConvertUsing(s =>
                    {
                        var d = new Destination();
                        foreach(var i in s.List)
                        {
                            d.Add(i);
                        }
                        return d;
                    });
0 голосов
/ 15 февраля 2011

Я так не думаю.

Преобразователи пользовательских типов AutoMapper принимают только источник и возвращают место назначения.

Но почему бы вам просто не реализовать неявное преобразование типов из int [] в Destination?http://www.csharphelp.com/2006/10/type-conversion-and-conversion-operators-in-c/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...