public void HandleMapping()

in src/DeloitteDigital.Atlas/Mapping/FieldMapping/ListFieldMapper.cs [13:39]


        public void HandleMapping<TModel>(TModel model, Item item, IPropertyMeta propertyMeta, ICache cache, IItemMapper itemMapper)
        {
            var listField = (MultilistField)item.Fields[propertyMeta.MappingName];

            if (listField == null) return;

            var listItems = listField.GetItems();

            var property = model.GetType().GetProperty(propertyMeta.PropertyName);

            var listType = property.PropertyType.GetGenericArguments()[0];

            var genericList = typeof(List<>).MakeGenericType(listType);
            var collection = Activator.CreateInstance(genericList) as IList;
            if (collection == null)
            {
                return;
            }

            foreach (var linkedItem in listItems)
            {
                var childObject = Activator.CreateInstance(listType) as dynamic;
                itemMapper.Map(childObject, linkedItem);
                collection.Add(childObject);
            }
            property.SetValue(model, collection);
        }