/// <summary> /// Direct edit /// </summary> /// <typeparam name="Arg1"></typeparam> /// <typeparam name="Arg2"></typeparam> /// <param name="files_in"></param> /// <param name="func"></param> /// <param name="arg1"></param> /// <param name="arg2"></param> public static List <string> ChangeContent <Arg1, Arg2>(ChangeContentArgs a, List <string> files_in, Func <string, Arg1, Arg2, string> func, Arg1 arg1, Arg2 arg2) { for (int i = 0; i < files_in.Count; i++) { files_in[i] = func.Invoke(files_in[i], arg1, arg2); } RemoveNullOrEmpty(a, files_in); return(files_in); }
/// <summary> /// TResult is the same type as T1 (output collection is the same generic as input) /// </summary> /// <typeparam name="T1"></typeparam> /// <typeparam name="T2"></typeparam> /// <typeparam name="TResult"></typeparam> /// <param name="files_in"></param> /// <param name="func"></param> private static List <TResult> ChangeContent <T1, T2, TResult>(ChangeContentArgs a, Func <T1, T2, TResult> func, List <T1> files_in, T2 t2) { List <TResult> result = new List <TResult>(files_in.Count); for (int i = 0; i < files_in.Count; i++) { // Fully generic - no strict string can't return the same collection result.Add(func.Invoke(files_in[i], t2)); } CA.RemoveDefaultT <TResult>(result); return(result); }
private static void RemoveNullOrEmpty(ChangeContentArgs a, List <string> files_in) { if (a != null) { if (a.removeNull) { CA.RemoveDefaultT <string>(files_in); } if (a.removeEmpty) { CA.RemoveStringsEmpty2(files_in); } } }
/// <summary> /// Direct edit /// </summary> /// <param name="files_in"></param> /// <param name="func"></param> public static bool ChangeContent(ChangeContentArgs a, List <string> files_in, Predicate <string> predicate, Func <string, string> func) { bool changed = false; for (int i = 0; i < files_in.Count; i++) { if (predicate.Invoke(files_in[i])) { files_in[i] = func.Invoke(files_in[i]); changed = true; } } RemoveNullOrEmpty(a, files_in); return(changed); }