public override object GetFieldValue(string fieldValue, SitecoreFieldConfiguration config, SitecoreDataMappingContext context)
{
Type type = config.PropertyInfo.PropertyType;
//Get generic type
Type pType = Glass.Mapper.Utilities.GetGenericArgument(type);
//The enumerator only works with piped lists
IEnumerable<string> parts = fieldValue.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
//replace any pipe encoding with an actual pipe
parts = parts.Select(x => x.Replace(Global.PipeEncoding, "|")).ToArray();
IEnumerable<object> items = parts.Select(x => Mapper.GetFieldValue(x, Mapper.Configuration as SitecoreFieldConfiguration, context)).ToArray();
var list = Utilities.CreateGenericType(typeof (List<>), new Type[] {pType}) as IList;
foreach (var item in items)
{
if(item != null)
list.Add(item);
}
return list;
}