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))); } }
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);
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);