Example #1
0
        public static IList <TResult> AsReadOnlyIf <T, TResult>(this IEnumerable <T> source, bool condition, bool emptyIfNull = default)
            where T : class, IAsReadOnly <T>
            where TResult : class, T
        {
            //
            if (source is null)
            {
                return(emptyIfNull ? (condition ? (IList <TResult>)ListReadOnlyWrap <TResult> .Empty : new List <TResult>()) : null);
            }
            else if (condition)
            {
                var traversal = P_ConvertAsReadOnly <T, TResult> .Convert(source : source, isReadOnly : true).ToArray();

                if (traversal.Length == 0)
                {
                    return(ListReadOnlyWrap <TResult> .Empty);
                }
                else
                {
                    return(new ListReadOnlyWrap <TResult>(list: traversal));
                }
            }
            else
            {
                return(new List <TResult>(collection: P_ConvertAsReadOnly <T, TResult> .Convert(source: source, isReadOnly: false)));
            }
        }
Example #2
0
 public static void AsReadOnlyIf <T, TResult>(this T value, bool condition, out TResult result)
     where T : class, IAsReadOnly <T>
     where TResult : class, T
 => result = P_ConvertAsReadOnly <T, TResult> .Convert(value : value, isReadOnly : condition);
Example #3
0
 public static TResult AsReadOnlyIf <T, TResult>(this T value, bool condition)
     where T : class, IAsReadOnly <T>
     where TResult : class, T
 => P_ConvertAsReadOnly <T, TResult> .Convert(value : value, isReadOnly : condition);