Подскажите, если ли более простой способ замапить:
IEnumerable<T> к Array
IСollection<T> к Collection<T>
кроме как, вычитывать слево тип параметра обобщения создавать поочерёдно и пытаться проверить возможность привидения.
что-то типа:
var sourceTypeParam = sourceType.GetGenericParameters();
if(sourceType.IsAssignableFrom(typeof(IEnumerable<>).MakeGeneric(sourceTypeParam)))
{
sourceType = typeOf(Array<>).MakeGeneric(sourceTypeParam);
}
else if (sourceType.IsAssignableFrom(typeof(ICollection<>).MakeGeneric(sourceTypeParam)))
{
sourceType = typeOf(Collection<>).MakeGeneric(sourceTypeParam);
}