2016-12-07 2 views
0

Я хотел бы иметь возможность передавать несколько объектов в Automapper через словарь параметров, но сам словарь читается только.Передача нескольких объектов в параметрах Automapper

E.g. примеры, которые я нашел показать добавление один элемент, как это:

Mapper.Map<Source, Dest>(src, opt => opt.Items["Foo"] = "Bar"); 

Но я хотел бы сделать что-то больше, как это:

var mappingOptions = new Dictionary<string, object>(); 
mappingOptions["foo"] = "foo"; 
mappingOptions["bar"] = "bar"; 

var model = _mapper.Map<ThingModel>(realthing, 
    opt => opt.Items = mappingOptions // readonly, can't be assigned 
); 

ли добавление возможно более одного элемента, может быть только внутри LINQ?

ответ

2

Вы имеете в виду это?

Mapper.Map<Source, Dest>(src, opt => 
{ 
    opt.Items["foo"] = "foo"; 
    opt.Items["bar"] = "bar"; 
}); 
0

В таком случае вы должны очистить словарь и заполнить его с элементами из исходного словаря:

   var model = _mapper.Map<ThingModel>(
       //realthing, 
       opt => 
       { 
        opt.Items.Clear(); 
        mappingOptions.Aggregate(
         opt.Items, 
         (items, option) => 
         { 
          items.Add(option.Key, option.Value); 
          return items; 
         } 
         ); 
       } 
       ); 
Смежные вопросы