private static ErrorBuilder.TypeErrorsBuilder CheckIsCopyableEnumerable(this ErrorBuilder.TypeErrorsBuilder typeErrors, Type type, MemberSettings settings)
        {
            if (!typeof(IEnumerable).IsAssignableFrom(type))
            {
                return(typeErrors);
            }

            switch (settings.ReferenceHandling)
            {
            case ReferenceHandling.Throw:
            case ReferenceHandling.References:
                return(typeErrors);

            case ReferenceHandling.Structural:
                if (!IsCopyableCollectionType(type))
                {
                    return(typeErrors.CreateIfNull(type)
                           .Add(new NotCopyableCollection(type)));
                }

                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(typeErrors);
        }
Exemple #2
0
 internal TypeErrors(ErrorBuilder.TypeErrorsBuilder builder)
     : this(builder.Type, builder.Errors)
 {
 }