public bool Convert(Type targetType, object owner, ref object value)
{
if (!(value is object[]) || !targetType.IsArray)
return false;
if (targetType == typeof(object[]))
return true;
var values = ((object[])value);
var array = (Array)targetType.CreateInstance(values.Length);
var elementType = array.GetType().GetElementType();
for (int i = 0; i < values.Length; i++)
{
object element = values[i];
try
{
if (TryConvert(elementType, owner, ref element))
array.SetValue(element, i);
else
return false;
}
catch (ImmediateStop)
{
return false;
}
}
value = array;
return true;
}