private object CheckAndCoerceToGenericEnumerable(Type type, object value)
{
object result = value;
if (type != null && result != null)
{
var isList = typeof(IEnumerable).IsAssignableFrom(type);
if (type.IsGenericType && isList)
{
var genericTypeDefinition = type.GetGenericTypeDefinition();
var genericType = type.GetGenericArguments().FirstOrDefault();
Type[] generic = { genericType };
result = Activator.CreateInstance(genericTypeDefinition.MakeGenericType(generic));
var list = result as IList;
if (list != null)
foreach (var item in (IList)value)
list.Add(item);
}
}
return result;
}